用 sparksql 查询 es 集群的时候特别慢,es 集群有三个节点,总共大概有 200 亿条数据,jvm 堆内存 32G。 spark 查询时 pushdown 了之后结果集大概有 20 亿条数据,一个简单的字段匹配查询要跑一两个小时,目前连接时只用到了这些配置 es.scroll.size="10000" pushdown="true" es.scroll.keepalive="10m"
sparksql 代码:
val conf = new SparkConf().setAppName("SimpleExample").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'")
从 sparkUI 上的 metrics 看,99% 时间都浪费在了 executor compute time 上,但是我只是简单的 select 然后 save 到 hdfs 文件而已。 https://i.stack.imgur.com/IJ0oQ.jpg
1
wsc449 2018-09-19 00:17:26 +08:00
es 的问题查询获取少量数据很快,但是大数据出口就慢的出奇。
|
2
clancyliu 2019-12-11 15:21:03 +08:00
我现在也遇到了这个问题,请问你后面解决了这个问题了么?
|
3
clancyliu 2020-03-28 11:13:43 +08:00
我现在找到问题了,我用的云服务器,带宽太低,我在本地跑程序,传输速率很慢,如果把程序放在服务器上,还是很快的。
|