我的spark sql限制非常慢

no1*_*3ff 6 elasticsearch apache-spark apache-spark-sql spark-submit

我使用spark从elasticsearch读取。

select col from index limit 10;
Run Code Online (Sandbox Code Playgroud)

问题在于索引非常大,包含1000亿行,而spark会生成数千个任务来完成工作。
我只需要10行,即使1个任务也可以返回10行就可以完成工作了,我不需要那么多任务。
极限甚至是极限1都很慢。
代码?

sql = select col from index limit 10
sqlExecListener.sparkSession.sql(sql).createOrReplaceTempView(tempTable)
Run Code Online (Sandbox Code Playgroud)

sec*_*ree 6

limit源代码显示它会limit为每个分区取第一个元素,然后它会扫描所有分区。

为了加快查询速度,您可以指定分区键的一个值。假设您使用的day是分区键,下面的查询会快很多

select col from index where day = '2018-07-10' limit 10;
Run Code Online (Sandbox Code Playgroud)

  • 如果表没有分区怎么办? (3认同)