Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何在已应用于Spark RDD的函数中打印语句?_Apache Spark_Debugging_Pyspark_Apache Spark Sql_Databricks - Fatal编程技术网

Apache spark 如何在已应用于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

我将函数应用于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}
我面临的问题是:当我在DataRicks笔记本中运行上面的“data_3=…”语句时,我希望得到我在并行_func中打印的唯一标识符,以显示在某个控制台上的某个地方,因为当pandas_df数据框中的任何行出现问题时,这将使调试更容易

我尝试为运行作业的每个执行器检查std_out和std_err控制台,但总是有一大堆其他语句占据了控制台的大部分(我假设所有与正在执行的各种任务相关的Spark语句)。我有时可以在这浩瀚的语句海洋中找到我的print语句,但这是一种效率低下、效率低下的调试方式

有没有更好的方法来打印这样的声明?还是找到更好的方法?例如,我可以抑制Spark在控制台上不断抛出的所有其他执行相关语句吗


附加在控制台上打印的其他语句的一部分。

打印这不是一个很好的解决方案,因为正如您所说,spark编写了大量日志(打印用于调试也不好)

  • 您可以制作日志记录器,将日志写入其他地方(只有您的日志才会在那里写入),例如NFS/您可以在任何地方写入日志。(即使是在执行器上本地,然后检查是否存在日志)

  • 如果您试图查找“损坏”的行,可能只是为了删除,请仅筛选损坏的行并将其收集到驱动程序,然后您可以在笔记本上本地检查这些行