繁体   English   中英

Spark - ElasticSearch索引创建性能太慢

[英]Spark - ElasticSearch Index creation performance too slow

我正在尝试使用Apache spark在Elastic搜索中创建一个索引(将大量数据写入ES)。我已经完成了一个Scala程序来使用Apache spark创建索引。我必须索引大量数据,这是我的产品bean一个LinkedList。 然后。然后我试图遍历产品bean列表并创建索引。 我的代码如下。

val conf = new SparkConf().setAppName("ESIndex").setMaster("local[*]")
    conf.set("es.index.auto.create", "true").set("es.nodes", "127.0.0.1")
      .set("es.port", "9200")
      .set("es.http.timeout", "5m")
      .set("es.scroll.size", "100")

    val sc = new SparkContext(conf)

    //Return my product bean as a in a linkedList.
    val list: util.LinkedList[product] = getData() 

    for (item <- list) {
      sc.makeRDD(Seq(item)).saveToEs("my_core/json")
    }

这种方法的问题是花费太多时间来创建索引。 有没有办法以更好的方式创建索引?

  1. 除非有必要,否则不要通过驱动程序传递数据。 根据从getData返回的数据源,您应该使用相关的输入方法或创建自己的输入方法。 如果数据来自MongoDB,请使用例如mongo-hadoopSpark-MongoDB或Drill with JDBC connection。 然后使用map或类似方法构建所需对象,并在转换后的RDD上使用saveToEs

  2. 使用单个元素创建RDD没有意义。 它根本不会受益于Spark架构。 您只需启动潜在的大量任务,而这些任务只有一个活动执行程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM