记一次Spark cache table导致的数据问题以及思考

目前在做 Spark 升级(3.1.1升级到3.5.0)的时候,遇到了cache table导致的数据重复问题,这种情况一般来说是很少见的,因为一般很少用cache table语句。

当然该问题已经在Spark3.5.1已经解决了,可以查看对应的 SPARK-46995SPARK-45592

从以上的分析知道:是在做join的一方(包含了AQEshuffleRead-coalesced) 影响了join的另一方,导致EnsureRequirements规则在做执行前检查的时候,会把join的另一个方的shuffle 数据调整为 包含了AQEshuffleRead-coalesced)的一方:

复制代码
                      Scan
                       |
                   Shuffle(200)
                       |
  Scan           AQEShuffleRead(10)
   |                   |
Shuffle(10)   InMemoryTableScanExec
    \            /
         Join    

这会导致shuffle后的数据进行了错位(因为之前是shuffle(200),现在变成了shuffle(10)),具体原因笔者还是没有分析清楚,但是其中涉及到的点跟规则EnsureRequirements 以及 CoalesceShufflePartitions 有关,
EnsureRequirements 会做一些执行前的判断,主要是做任务shuffle的协调,
CoalesceShufflePartitions 中 collectCoalesceGroups 会收集 QueryStageExec ,如果是 join 的话,则会join的子节点会收集到一个组里去,这样就能看到 join中会有 AQEShuffleRead coalesced 成对出现

相关推荐
YDS8296 小时前
黑马点评 —— 分布式锁详解加源码剖析
java·spring boot·redis·分布式
hashiqimiya6 小时前
windows的hadoop集群环境直接配
大数据·hadoop·分布式
AI营销先锋7 小时前
原圈科技GEO解密:AI营销变革下,如何抢占增长先机?
大数据·人工智能
pingao1413788 小时前
智慧井盖传感器:革新传统,开启地下管网智能运维新时代
大数据
云飞云共享云桌面8 小时前
非标自动化研发成本高?云飞云共享云桌面:1台主机=10台工作站,年省数十万。
大数据·运维·服务器·人工智能·自动化·云计算·电脑
互联网江湖10 小时前
快手营收利润双增,可灵AI会不会成为第二个Seedance?
大数据·人工智能
KANGBboy10 小时前
ES 父子索引使用
大数据·elasticsearch·搜索引擎
pp起床11 小时前
Part02:基本概念以及基本要素
大数据·人工智能·算法
Gauss松鼠会11 小时前
【GaussDB】LLVM技术在GaussDB等数据库中的应用
大数据·数据库·架构·数据库开发·gaussdb·llvm
易天ETU12 小时前
100G BIDI 80km ZR4光模块:长距离传输的革新力量
大数据·光模块·易天光通信