如何运行dsbulk卸载并直接写入S3

问题描述

我想运行dsbulk卸载命令,但是我的cassandra集群在要导出的表中有大约1tb的数据。有没有一种方法可以运行dsbulk unload命令并将数据流传输到s3中,而不是写入磁盘?

我正在我的开发环境中运行以下命令,但是显然这只是写到我计算机上的磁盘上

bin/dsbulk unload -k myKeySpace -t myTable -url ~/data --connector.csv.compression gzip

解决方法

它不开箱即用地“本地”支持它。从理论上讲,它可以实现,因为DSBulk现在是open source,但是应该由别人来完成。

更新: 正如亚当指出的那样,解决方法可能是使用aws s3 cp并从DSBulk对其进行管道传输,如下所示:

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

但是有一个限制-卸载将在一个线程中执行,因此卸载可能会慢得多。

短期内,您可以在本地主模式下通过Spark Cassandra Connector使用Apache Spark,如下所示(对于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://....")