gpt4 book ai didi

apache-spark - 如何调试传递给mapPartitions的函数

转载 作者:行者123 更新时间:2023-12-04 05:00:12 26 4
gpt4 key购买 nike

我如何处理无法在我传递给 pyspark 中的 mapPartitions() 的函数中使用打印语句调试代码的问题?

考虑这个例子:

def func(kv_iterator):
for key, value in iterator:
#do fancy stuff
print('This print statement does not reach the driver program')
return [result]

result = someRdd.mapPartitions(func)

在 func 内部,我想用可迭代对象和索引做很多工作,但是我可以测试我的代码,而无需过多地处理 func 内部的变量。

是否有可能以某种方式将打印语句从一个分区重定向到我的驱动程序/输出 channel ?

最佳答案

您可以使用以下方法之一:

  • 使用 local 模式。所有输出都应该在控制台中可见。如果不是,则您的代码可能永远不会执行 - 尝试 result.count()result.foreach(lambda _: None) 或其他操作 - 这可能是这里的问题。
  • 将标准输出(和标准错误,如果你想)重定向到文件。对于基本的 prints 使用 file 参数:
    print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
  • 使用远程调试器 - How can pyspark be called in debug mode?

  • 但最重要的是 - 在 Spark 之外测试功能。与 mapPartitions 一起使用的函数应该接受 Iterable (具体实现通常是 itertools.chain )并返回 Iterable

    关于apache-spark - 如何调试传递给mapPartitions的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47583013/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com