Spark查询elasticsearch中的1000亿行数据非常慢

时间:2018-06-25 06:21:34

标签: apache-spark elasticsearch apache-spark-sql elasticsearch-5

我最近使用spark 2.2查询具有3个节点和1万亿行数据的巨大的Elasticsearch集群。我使用org.elasticsearch:elasticsearch-spark-20_2.11:5.5.0进行spark-es集成。

但是,结果集太大(包含1000亿行数据),spark作业将花费2个小时来完成它。

我确认所有字段都是简单的String类型,并且我的程序是正确的(未设置一些优化选项),并且spark确实进行了pushDown来帮助最小化输出,但是仍然太大。以下是我在使用Spark时的配置,是否有优化建议?

es.scroll.size="10000"
pushdown="true" 
es.scroll.keepalive="10m"

我的spark sql代码:

val conf = new SparkConf()
    .setAppName("Simple Example")
    .set("es.resource", "myIndex/info")
    .set("es.read.field","field1, field2, field3")
    .set("es.scroll.size","10000")
    .set("es.scroll.keepalive","10m")
    .set("es.nodes","192.168.12.12")
    .set("es.port","9200")
    .set("pushdown","true");
val sc = new SparkContext(conf);
val df = sc.sql("select * from myIndex where name = 'exampleName'")

然后我检查spark UI,事件时间轴暗示Executor compute time太长。

enter image description here

0 个答案:

没有答案