首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SQL select语句包含在dsbulk卸载命令中

如何将SQL select语句包含在dsbulk卸载命令中
EN

Stack Overflow用户
提问于 2022-06-21 07:29:06
回答 2查看 148关注 0票数 1

我在cassandra有一个巨大的orderhistory表,拥有2013年的数据,但我只想卸载最后12个月的有序历史数据,我使用下面的命令来完成它,从2013年开始卸载所有数据并存储在path data/json/customer_data/orderhistory/data中。如何修改下面的语句,以便每次运行该语句时,它都应该只选择最后12个月的数据?

代码语言:javascript
复制
dsbulk unload -k customer_data -t crawlsiteidentifiedpages -h '172.xx.xx.xxx' \
  -c json -url data/json/customer_data/orderhistory/data
EN

回答 2

Stack Overflow用户

发布于 2022-06-21 09:36:34

您需要删除选项-k-t,并使用文档中描述的-query选项,如下所示:

代码语言:javascript
复制
dsbulk unload -query 'select * from ks.table where <your condition>'

要确保卸载是并行化的,请确保您的条件包括类似于and token(pkcol) > :start and token(pkcol) <= :end的部分,其中pkcol是分区列的名称(如果您有多个分区列,请指定它们以逗号分隔)。

票数 1
EN

Stack Overflow用户

发布于 2022-06-21 09:54:24

您应该使用-t crawlsiteidentifiedpages而不是-query并提供SELECT查询,例如:

代码语言:javascript
复制
-query "SELECT * FROM crawlsiteidentifiedpages WHERE token(pk) > :start and token(pk) <= :end and date > maxTimeuuid('2021-06-21+0000') ALLOW FILTERING"

几点意见:

  1. 我假设您的表有一个分区键列pk和一个timeuuid类型的集群列date --请相应地调整实际查询。
  2. WHERE限制token(pk) > :start and token(pk) <= :end允许DSBulk并行操作并提高性能。
  3. WHERE限制date > maxTimeuuid('2021-06-21+0000')是魔术发生的地方,允许您只选择最后12个月的数据。
  4. 不幸的是,您还需要将ALLOW FILTERING添加到这种查询中,否则Cassandra将拒绝查询。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72696818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档