Cassandra 如何运行dsbulkunload并直接写入S3
我想运行dsbulk unload命令,但我的cassandra集群在我要导出的表中有~1tb的数据。是否有一种方法可以运行dsbulkunload命令并将数据流式传输到s3,而不是写入磁盘 我在我的开发环境中运行以下命令,但显然这只是在我的机器上写入磁盘Cassandra 如何运行dsbulkunload并直接写入S3,cassandra,datastax,dsbulk,Cassandra,Datastax,Dsbulk,我想运行dsbulk unload命令,但我的cassandra集群在我要导出的表中有~1tb的数据。是否有一种方法可以运行dsbulkunload命令并将数据流式传输到s3,而不是写入磁盘 我在我的开发环境中运行以下命令,但显然这只是在我的机器上写入磁盘 bin/dsbulk unload-k myKeySpace-t myTable-url~/data--connector.csv.compression gzip它不支持“本机”开箱即用。理论上它可以实现,就像现在的DSBulk一样,但它应
bin/dsbulk unload-k myKeySpace-t myTable-url~/data--connector.csv.compression gzip
它不支持“本机”开箱即用。理论上它可以实现,就像现在的DSBulk一样,但它应该由某人来完成
更新:
正如Adam所指出的,解决方法可以是使用aws s3 cp
并从DSBulk向其输送,如下所示:
dsbulk unload .... |aws s3 cp - s3://...
但是有一个限制-卸载将在一个线程中执行,因此卸载可能会慢得多
短期内,您可以在本地主模式下使用ApacheSpark和Spark Cassandra连接器,类似这样(对于Spark 2.4):
sparkshell--packages com.datasax.spark:spark-cassandra-connector-assembly_2.11:2.5.1
和内部:
val data=spark.read.format(“org.apache.spark.sql.cassandra”)\
.options(映射(“表”->“表名称”、“键空间”->“键空间名称”)).load()
data.write.format(“json”).save(“s3a://…”)
是否有任何理由一个人不应该将dsbulk stdout直接传输到aws s3 cp?一个线程执行,但是是的-这是一个很好的观点,让我更新一下