我正在尝试使用SparkSQL从Elasticsearch中的索引中获取所有文档,并使用es-hadoop库将它们发送到另一个索引。将来它将用于中间处理,因此我需要SparkSQL进行数据处理。
我用Java开发了一个简单的类,应该做这种操作(如果我理解正确的话)
Logger.getLogger("org.apache").setLevel(Level.WARN);
System.setProperty("hadoop.home.dir", "/opt/test");
SparkConf conf = new SparkConf()
.setAppName("es-test")
.setMaster("local[10]");
SparkSession sparkSession = SparkSession.builder()
.config(conf)
.getOrCreate();
Map<String, String> sourceTaskConfig = new HashMap<>();
sourceTaskConfig.put("es.nodes", "localhost");
sourceTaskConfig.put("es.port.size", "9200");
sourceTaskConfig.put("es.resource", "index1");
Dataset<Row> dataframe = JavaEsSparkSQL.esDF(new SQLContext(sparkSession), sourceTaskConfig);
//Here will be data processing
Map<String, String> destinationTaskConfig = new HashMap<>();
destinationTaskConfig.put("es.nodes", "localhost");
destinationTaskConfig.put("es.port.size", "9200");
JavaEsSparkSQL.saveToEs(dataframe, "index2", destinationTaskConfig);
我希望我所有来自index1的数据都将移至index2,但实际上,我仅收到10000个文档,并且任务停止。我已经尝试在配置中使用大小限制。 如果有人可以向我解释我做错了什么,我会非常高兴。 非常感谢