如何运行dsbulkunload并直接写入s3

dddzy1tm  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(403)

我想运行dsbulk unload命令,但是我的cassandra集群中有~1tb的数据在我要导出的表中。有没有办法运行dsbulkunload命令并将数据流式传输到s3而不是写入磁盘?
我在dev环境中运行以下命令,但显然这只是在我的机器上写磁盘 bin/dsbulk unload -k myKeySpace -t myTable -url ~/data --connector.csv.compression gzip

zujrkrfu

zujrkrfu1#

它不支持开箱即用。理论上它是可以实现的,因为dsbulk现在是开源的,但是它应该由某人来完成。
更新:解决方法可以是,正如adam所指出的那样 aws s3 cp 从dsbulk到它的管道,像这样:

dsbulk unload .... |aws s3 cp - s3://...

但是有一个限制-卸载将在一个线程中执行,因此卸载可能会慢得多。
短期内,您可以在本地主模式下使用apache spark和spark cassandra连接器,类似于这样(对于spark 2.4):

spark-shell --packages com.datastax.spark:spark-cassandra-connector-assembly_2.11:2.5.1

内部:

val data = spark.read.format("org.apache.spark.sql.cassandra")\
   .options(Map( "table" -> "table_name", "keyspace" -> "keyspace_name")).load()
data.write.format("json").save("s3a://....")

相关问题