【发布时间】:2020-05-30 05:40:03
【问题描述】:
我正在向 Spark RDD 应用一个函数,如下所示:
data_2 = sqlContext.createDataFrame(pandas_df,data_schema)
data_3 = data_2.rdd.map(lambda x: parallelized_func(x, **args*)).collect()
现在,parallelized_func 函数看起来像这样:
def parallelized_func(a,b,c):
####FUNCTION BODY#####
print("unique identifier for each row in pandas_df")
return {'df1':df1,'df2':df2}
我面临的问题是:当我在 Databricks 笔记本中运行上面的“data_3 = ...”语句时,我希望获取我在 parallelized_func 中打印的唯一标识符以显示在某处,在某些控制台上,因为当 pandas_df 数据框中的任何行出现问题时,调试起来会更容易。
我尝试检查运行作业的每个执行程序的 std_out 和 std_err 控制台,但总是有一大堆其他语句占据了大部分控制台(我假设所有与正在执行的各种任务相关的 Spark 语句)。有时我可以在浩瀚的其他语句中找到我的打印语句,但这是一种非常低效且低效的调试方式。
有没有更好的方法可以打印这样的声明?或者找到更好的方法?例如,我可以抑制 Spark 在控制台上不断抛出的所有其他与执行相关的语句吗?
附加在控制台上打印的其他语句的snapshot。
【问题讨论】:
标签: apache-spark debugging pyspark apache-spark-sql databricks