saveJsonToEs需要太多时间来处理每个元素,即使节点没有重载

时间:2017-07-18 13:34:06

标签: apache-spark elasticsearch

JavaEsSpark.saveJsonToEs(JavaRDD<String>, HashMap<String, String>) 

花费太多时间来处理每个元素。 我有50000个元素,处理所有元素需要数小时。 我有以下配置。

ES_BATCH_SIZE_BYTES = 1mb,
ES_BATCH_SIZE_ENTRIES = 1000,
ES_BATCH_WRITE_REFRESH = false,
ES_BATCH_WRITE_RETRY_COUNT = 10,
ES_BATCH_WRITE_RETRY_WAIT = 30s

。 我试图找到solution from thread - SPARK-7122,建议将Spark版本更新到1.5或更高版本,我已经使用了1.6

我的群集或节点没有超载,而且它们很健康。

1 个答案:

答案 0 :(得分:4)

50000行你需要花费几个小时......检查每一行的大小......这也很重要......基于你可以增加/减少批量大小,如ES_BATCH_SIZE_ENTRIES/ES_BATCH_SIZE_BYTES

确保写入时数据不会转到某个特定节点... - 单个节点上的测试性能,具有单个分片且没有副本。 在默认设置下记录性能,以便您有一个基准来衡量。

最后,在spark方面,检查你的rdd.partitions.length是否需要重新分区,以获得更好的并行性,并检查其他参数,如执行程序内存,驱动程序内存,执行程序和内核数等...