一、简单介绍
RDD的join操作,如果存在有join的RDD为空,则计算后的结果也将是空的。
二、问题与排错
原先写好的Spark Driver,运行的好好的,亲测运行的结果与预期也是一致的,但是今天测试人员反映数据不对,有缺少计算出来的数据,嘿,程序员的第一反应(内心):这是不可能的事情,我自己都测试过了,是不是你自己搞错测试数据了。于是接下来就是一个证明谁错误的过程——找测试人员要了没有计算到的测试数据,然后运行调试,汗——真的没有输出结果,而且程序没有报错,这说明程序语法和环境没有问题,应该是数据处理的业务逻辑出了问题,那就开始找问题吧。
看了运行日志,有所发现:
16/12/26 16:54:20 INFO DAGScheduler: Submitting 2 missing tasks from ResultStage 11 (MapPartitionsRDD[59] at map at MyApplication.scala:91)
有2个tasks是有问题的,所以导致没有输出结果——相同于数据是空的。

本文探讨了Spark中RDD的join操作,当其中一个参与join的RDD为空时,结果也会为空。作者通过实际遇到的问题和调试过程,强调了在编写Spark程序时考虑这种情况的重要性,并提供了一个示例来验证这种行为。注意在处理数据时要考虑临界值,避免因为空RDD导致的无声无息的错误。

3762

被折叠的 条评论
为什么被折叠?



