私はCassandra 2.0.9を使用して、非常に大量のデータを格納します。たとえば、1つの列ファミリーで100Gbとします。このデータを高速でCSVにエクスポートしたいと思います。
高速ストレージ、15 GBのRAMおよび4コアのAmazon Ec2インスタンスを使用しています
ギガバイトのデータをCassandraからCSVにエクスポートするためのより良いオプションはありますか?
Cassandraから数百万行のテーブルをエクスポートしようとすると、COPYの使用は非常に困難になるため、cassandraテーブルを作成し、CSVにエクスポートします。
見てください サンプルソリューション Javaライブラリを使用)。
また、データがクラスター化されていて巨大な場合に、さまざまなソリューションを特別に試した後も諦めました。
私は Spark ジョブを使用してすべてのデータをファイル(S3など)にエクスポートしましたが、うまくいきました。
@ user1859675の答えに触発され、Sparkを使用してCassandraからデータをエクスポートする方法を示します
val cassandraHostNode = "10.xxx.xxx.x5,10.xxx.xxx.x6,10.xxx.xxx.x7";
val spark = org.Apache.spark.sql.SparkSession
.builder
.config("spark.cassandra.connection.Host", cassandraHostNode)
.appName("Awesome Spark App")
.master("local[*]")
.getOrCreate()
val dataSet = spark.read.format("org.Apache.spark.sql.cassandra")
.options(Map("table" -> "xxxxxxx", "keyspace" -> "xxxxxxx"))
.load()
val targetfilepath = "/opt/report_values/"
dataSet.write.format("csv").save(targetfilepath) // Spark 2.x
これが機能するには、クラスパスに "spark-cassandra-connector
"が必要です。
使用しているバージョンは以下のとおりです
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.11</artifactId>
<version>2.3.2</version>