我用spark从elasticsearch读取。喜欢
select col from index limit 10;
问题是索引非常大,它包含 1000 亿行。而 spark 生成数千个任务来完成这项工作。
我只需要 10 行,即使 1 个任务返回 10 行就可以完成工作。我不需要那么多任务。
即使是 limit 1,limit 也很慢。
验证码:
sql = select col from index limit 10
sqlExecListener.sparkSession.sql(sql).createOrReplaceTempView(tempTable)
最佳答案
source code of limit显示它将为每个分区获取第一个 limit
元素,然后它将扫描所有分区。
为了加快查询速度,您可以指定分区键的一个值。假设您使用 day
作为分区键,下面的查询会快得多
select col from index where day = '2018-07-10' limit 10;
关于apache-spark - 我的 spark sql 限制很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47565131/