Apache spark 如何在已应用于Spark RDD的函数中打印语句?
我将函数应用于Spark RDD,如下所示:Apache spark 如何在已应用于Spark RDD的函数中打印语句?,apache-spark,debugging,pyspark,apache-spark-sql,databricks,Apache Spark,Debugging,Pyspark,Apache Spark Sql,Databricks,我将函数应用于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##### pr
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}
我面临的问题是:当我在DataRicks笔记本中运行上面的“data_3=…”语句时,我希望得到我在并行_func中打印的唯一标识符,以显示在某个控制台上的某个地方,因为当pandas_df数据框中的任何行出现问题时,这将使调试更容易
我尝试为运行作业的每个执行器检查std_out和std_err控制台,但总是有一大堆其他语句占据了控制台的大部分(我假设所有与正在执行的各种任务相关的Spark语句)。我有时可以在这浩瀚的语句海洋中找到我的print语句,但这是一种效率低下、效率低下的调试方式
有没有更好的方法来打印这样的声明?还是找到更好的方法?例如,我可以抑制Spark在控制台上不断抛出的所有其他执行相关语句吗
附加在控制台上打印的其他语句的一部分。打印这不是一个很好的解决方案,因为正如您所说,spark编写了大量日志(打印用于调试也不好)