用 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.