spark sql select count(1) from tableName 执行原理

Container123 2021-05-07 05:41:32
spark sql中select count(1) from tableName 每个map任务会把分区内数据都加载进来执行count,还是一条条遍历执行count?

除了shuffle,该sql还在哪个阶段会造成内存溢出呢?

大神留步指导一下。
...全文
1642 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞向海洋的猪 2021-05-10
  • 打赏
  • 举报
回复
sparksql底层还是依据RDD来进行操作的,可以理解为最终sql中count 会演变为 RDD.count(), 而RDD.count()中实现将每个分区中的元素进行统计,再进行sum
def count(): Long = sc.runJob(this, Utils.getIteratorSize _).sum
,而RDD每个分区的计算就是将元素直接纳入内存进行统计。
Container123 2021-05-10
  • 打赏
  • 举报
回复
,仔细想了一下,如果一条条读取,io浪费很严重,多谢指导
飞向海洋的猪 2021-05-08
  • 打赏
  • 举报
回复
应该是将所有得数据都加载到内存中进行count计算得。
fish810423 2021-06-21
  • 举报
回复 1
@飞向海洋的猪 水电费水电费
飞向海洋的猪 2021-06-22
  • 举报
回复
@fish810423 ?机器人吗?

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧