Hi all, 在使用flink的shuffle功能时,我发现在operator chain中不同的位置进行shuffle,IO速度有非常明显的差距。
比如我的这个例子: source-->cal--->sort--->SinkConversionToRow--->sink 从hive读数据,计算,排序,转化为外部类型行,写入hive。 当我把shuffle加到cal和sort中间时, source-->cal-- (rebalance)->sort--->SinkConversionToRow--->sink shuffle的数据传输IO速度是3G/s 当我把shuffle加到SinkConversionToRow和sink中间时, source-->cal-- ->sort--->SinkConversionToRow--(rebalance)-->sink shuffle的数据传输IO速度是0.1G/s 足足差了30倍! 我猜测这是由于SinkConversionToRow将数据转化为了外部格式,外部格式传输速度慢,内部格式传输速度快。 但是为什么差距这么大? 内部格式如何做到传输速度这么快,外部格式又为什么传输速度这么慢? SinkConversionToRow代码位置: org.apache.flink.table.planner.plan.nodes.physical.batch.BatchExecSink#translateToTransformation -- Sent from: http://apache-flink.147419.n8.nabble.com/
