spark生成很多任务,尽管分区号是1

nhjlsmyf  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(310)

我的代码:

df = self.sql_context.sql(f"select max(id) as id from {table}")
return df.collect()[0][0]

我的表是按id分区的-它有100m条记录,但只有3个不同的id。
我希望这个查询能够处理1个任务,并且只扫描分区列(id)。
我不明白为什么只有3个分区的collect行有691个任务
我猜查询正在对表执行完全扫描,但我不明白为什么它不扫描元数据

xzlaal3s

xzlaal3s1#

你的 df 包含整个表的聚合结果,它只包含一行(只有一个字段是 max(id) ),这就是为什么它只有一个分区。
但是原来的 table Dataframe可能有许多分区(或者只有一个分区,但是它的计算需要600个阶段,每个阶段触发一个任务,这并不常见)
如果没有关于并行配置、输入源类型和转换的详细信息,就很难提供更多帮助!

相关问题