我需要将数据从Cassandra复制到Elastic搜索。在Cassandra表中几乎有5TB数据。 我正在使用datastax“ spark-cassandra-connector_2.11”连接器连接到Cassandra。 并尝试使用Elastic search Spark Streaming API。 但是由于海量数据,无法开始建立索引。 如果有错,请纠正我。
JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);
CassandraJavaRDD<CassandraRow> cassandraJavaRDD = CassandraJavaUtil.javaFunctions(sparkContext).cassandraTable(keyspace,table);
JavaRDD<String> dataRDD = cassandraJavaRDD.select("value").map(new Function<CassandraRow, String>() {
@Override
public String call(CassandraRow cassandraRow) throws Exception {
System.out.println("cassandraRow");
return cassandraRow.getString("value");
}
});
List<String> dataList = dataRDD.collect();
JavaStreamingContext javaStreamingContext = new JavaStreamingContext(sparkContext, Seconds.apply(1));
Queue<JavaRDD<String>> microbatches = new LinkedList<JavaRDD<String>>();
microbatches.add(dataRDD);
JavaDStream<String> javaDStream = javaStreamingContext.queueStream(microbatches);
JavaEsSparkStreaming.saveJsonToEs(javaDStream, "index_spark/productDoc");
javaStreamingContext.start();
还有其他方法可以使读写流并行化吗?