apache-spark – 我的spark sql限制非常慢

我用spark来读取elasticsearch.Like

select col from index limit 10;

问题是索引非常大,它包含1000亿行.并且spark产生数千个任务来完成工作.
我只需要10行,甚至1个任务返回10行就可以完成这项工作.我不需要这么多任务.
即使限制1,限制也很慢.
码:

sql = select col from index limit 10
sqlExecListener.sparkSession.sql(sql).createOrReplaceTempView(tempTable)

最佳答案
source code of limit显示它将为每个分区采用第一个限制元素,然后它将扫描所有分区.

要加快查询速度,您可以指定分区键的一个值.假设您使用day作为分区键,以下查询将更快

select col from index where day = '2018-07-10' limit 10;
点赞