我如何 运行 dsbulk 卸载并直接写入 S3
How do I run dsbulk unload and write directly to S3
我想要 运行 一个 dsbulk 卸载命令,但是我的 cassandra 集群在我想要导出的 table 中有 ~1tb 的数据。有没有办法 运行 dsbulk 卸载命令并将数据流式传输到 s3 而不是写入磁盘?
我 运行 在我的开发环境中执行以下命令,但显然这只是写入我机器上的磁盘
bin/dsbulk unload -k myKeySpace -t myTable -url ~/data --connector.csv.compression gzip
它不支持开箱即用的“本机”。理论上它可以实现,因为 DSBulk 现在 open source,但它应该由某人完成。
更新:
解决方法可能是,正如 Adam 所指出的那样,使用 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://....")
我想要 运行 一个 dsbulk 卸载命令,但是我的 cassandra 集群在我想要导出的 table 中有 ~1tb 的数据。有没有办法 运行 dsbulk 卸载命令并将数据流式传输到 s3 而不是写入磁盘?
我 运行 在我的开发环境中执行以下命令,但显然这只是写入我机器上的磁盘
bin/dsbulk unload -k myKeySpace -t myTable -url ~/data --connector.csv.compression gzip
它不支持开箱即用的“本机”。理论上它可以实现,因为 DSBulk 现在 open source,但它应该由某人完成。
更新:
解决方法可能是,正如 Adam 所指出的那样,使用 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://....")