Chcę uruchomić polecenie rozładowywania DSBULK, ale mój klaster Cassandra ma ~ 1TB danych w tabeli, którą chcę eksportować. Czy istnieje sposób na uruchomienie polecenia rozładowywania DSBULK i strumieniowe dane do S3 w przeciwieństwie do pisania na dysku?

Uruchamiam następujące polecenie w moim środowisku Dev, ale oczywiście jest to pisanie do dysku na mojej maszynie

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

1
Wonger 21 październik 2020, 04:05

1 odpowiedź

Najlepsza odpowiedź

Nie obsługuje tego "natywnie" z pudełka. Teoretycznie można go wdrożyć, ponieważ Dsbulk jest teraz Open Source, ale należy to zrobić przez kogoś.

Aktualizacja: Obejście może być, jak wskazano Adam, jest użycie aws s3 cp i rury z DSBULK, podobnie:

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

Ale istnieje ograniczenie - rozładunek zostanie przeprowadzony w jednym wątku, więc rozładunek może być znacznie wolniejszy.

W krótkim terminie możesz użyć apache iskry w lokalnym trybie głównym z iskry złączem Cassandra, coś takiego (dla iskier 2.4):

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

I w środku:

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
Alex Ott 21 październik 2020, 15:13