SparkSQL使用es-hadoop从Elasticsearch接收10000多个文档

时间:2019-10-19 09:03:31

标签: java elasticsearch apache-spark-sql

我正在尝试使用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个文档,并且任务停止。我已经尝试在配置中使用大小限制。 如果有人可以向我解释我做错了什么,我会非常高兴。 非常感谢

0 个答案:

没有答案