如何将数据从Cassandra复制到Elastic Search 6.7

时间:2019-05-16 11:30:56

标签: java apache-spark elasticsearch cassandra spark-streaming

我需要将数据从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();

还有其他方法可以使读写流并行化吗?

0 个答案:

没有答案