如何在Spark工作器的map函数中调试错误?

时间:2016-10-06 07:54:08

标签: apache-spark pyspark

我是Spark的新手并试图找到自己的方式。

我有一个Spark应用程序,它在数据集上运行复杂的地图功能。此映射函数可能因主要与数据相关的原因而失败。如何获得有关出错的有意义的信息?我不知道从哪里开始。

非常感谢!

2 个答案:

答案 0 :(得分:0)

如果要编写单元测试,可以从集合中生成数据集,使用map函数对其进行映射,并使用您喜欢的测试套件使用collect测试结果。

如果您正在使用PySpark,我真的不知道如何调试Spark Job,但是使用分布式计算引擎,调试模式总是一团糟,所以我甚至不认为它是#39值得探索这条道路。

在我的公司,当我们想要测试特定功能的逻辑时,我们通常会进行单元测试,所以你应该好好去。

此答案应涵盖您所需的内容:How do I unit test PySpark programs?

答案 1 :(得分:0)

好的,所以这确实可行,但也有一些陷阱。

一般来说,创建一个封装地图函数结果的类,例如

class CalcResult(object):

    def __init__(self):
        self.dataResult=None
        self.TraceBackStr=None
        self.wasError=None

然后,您可以测试wasError字段以记录异常。

异常对象不能是回溯对象,因为它们不可选。所以,我建议使用格式化的字符串。