我可以使用以下命令将所有数据导出到csv:
COPY data TO '/usr/local/cassandra/my_data.csv';
但是现在我想将指定时间的数据导出到csv,例如这种情况:
select * from data where upload_time >='2020-10-16 00:00:00.000+00' and upload_time <'2020-10-17 00:00:00.000+0000' allow filtering ;
我应该如何使用命令?
您可以将DSBulk实用程序与自定义查询一起使用,但是需要小心并放置优化条件,以便它将执行完整扫描,但要使用令牌范围(有关详细信息,请参见此博客文章)。
诸如此类的东西(用pk
实际的分区键列的名称替换,并拆分查询字符串-我出于可读性考虑将其拆分):
dsbulk unload -url data.csv \
-query "SELECT * FROM ks.table WHERE token(pk) > :start AND token(pk) <= :end
AND upload_time >='2020-01-01 00:00:00.000+00'
AND upload_time <'2021-01-01 00:00:00.000+0000' allow filtering"
另一种方法是将Spark与Spark Cassandra Connector一起使用(即使在本地主模式下)-它将spark-shell
在后台执行相同的操作(例如,Scala中的示例,可以通过pyspark进行类似操作):
import org.apache.spark.sql.cassandra._
val data = spark.read.cassandraFormat("table", "keyspace").load()
val filtered = data.filter("upload_time >= cast('2020-01-01 00:00:00.000+00' as timestamp) AND upload_time <= cast('2021-01-01 00:00:00.000+0000' as timestamp)")
filtered.write.format("csv").save("data.csv")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句