(spark sql)为什么它是“select id,name from table limit 100”的全表扫描

时间:2018-02-21 12:31:39

标签: scala hadoop apache-spark hive

环境: Spark:1.6.3和2.2.1

我有一个蜂巢表,如:

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

此表包含12k个文件。

当我运行限制100查询时,为什么spark计算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,但我想了解为什么火花会以这种方式起作用,以及是否有改变它的设置。

提前致谢

0 个答案:

没有答案