我使用spark从elasticsearch中读取。Like
select col from index limit 10;
问题是索引非常大,它包含 1000 亿行。而 Spark 会生成数千个任务来完成这项工作。
我只需要 10 行,即使 1 个任务也会返回 10 行来完成工作。我不需要那么多任务。
即使限制 1,限制也非常慢。
Code:
sql = select col from index limit 10
sqlExecListener.sparkSession.sql(sql).createOrReplaceTempView(tempTable)
The 限制源代码 https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/limit.scala表明它将采取第一个limit
每个分区的元素,然后它将扫描所有分区。
为了加快查询速度,您可以指定分区键的一个值。假设您正在使用day
作为分区键,下面的查询会快很多
select col from index where day = '2018-07-10' limit 10;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)