(sparksql)为什么是“selectid,name fromtablelimit100”的全表扫描

dl5txlt9  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(181)

环境:spark:1.6.3 and 2.2.1
我有一张Hive桌,像:

Create table test (id int,name string)
stored as parquet

此表包含12k个文件。
为什么spark在运行limit 100这样的查询时要计算12k个任务。

e.g. spark-shell
scala> sqlContext.sql("SELECT id,name FROM test LIMIT 100").count()
[Stage 8:>                                                     (0 + 8) / 11258]
or
scala>val df2 =sqlContext.sql("SELECT id,name FROM test LIMIT 100")

scala> df2.write.save("/tmp/deleteme/")
[Stage 12:>                                                     (0 + 8) / 11258]

有没有办法防止这种行为?spark2有点不同,但仍然像>10k任务。
我知道tablesample,但我想知道为什么spark会这样做,如果有一个设置来改变这一点。
提前谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题