Как мне запустить выгрузку dsbulk и записать непосредственно в S3

#cassandra #datastax #dsbulk

#cassandra #datastax #dsbulk

Вопрос:

Я хочу запустить команду выгрузки dsbulk, но в моем кластере cassandra ~ 1 ТБ данных в таблице, которую я хочу экспортировать. Есть ли способ запустить команду выгрузки dsbulk и передать данные в s3, а не записывать на диск?

Я запускаю следующую команду в своей среде разработки, но, очевидно, это просто запись на диск на моем компьютере

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

Ответ №1:

Он не поддерживает его «изначально» из коробки. Теоретически это может быть реализовано, поскольку DSBulk теперь имеет открытый исходный код, но кто-то должен это сделать.

Обновление: обходным путем может быть, как указал Адам, использование aws s3 cp и передача к нему из DSBulk, например:

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

но есть ограничение — выгрузка будет выполняться в одном потоке, поэтому выгрузка может быть намного медленнее.

В краткосрочной перспективе вы можете использовать Apache Spark в режиме локального мастера с Spark Cassandra Connector, что-то вроде этого (для 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://....")
  

Комментарии:

1. Есть ли какая-либо причина, по которой человек не должен просто передавать стандартный вывод aws s3 cp dsbulk?

2. выполнение одного потока, но да — это хороший момент, позвольте мне обновить