在PySpark中尽力重试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PySpark中尽力重试相关的知识,希望对你有一定的参考价值。

假设我有一个RDD,我需要映射一个可能失败的任务

rdd = sc.parallelize([1,2,3])
rdd.map(a_task_that_can_fail)

有没有办法设置火花来尽最大努力运行任务。我希望的行为是:

  • 重试任务5次,如果5次后失败,则返回None,如果成功则返回结果
答案

“set spark”到底是什么意思? python代码怎么样?或者你的意思是失败,如内存不足?

rdd = sc.parallelize([1,2,3, 0])

def try_and_return(x, number_of_trys = 5):
    try_number = 0;
    return_value = None;

    while (try_number < number_of_trys):
        try:
            return_value = 1.0/x
            break
        except ZeroDivisionError:
            try_number += 1
    return return_value


print rdd.map(lambda x: try_and_return(x)).collect()

[1.0,0.5,0.3333333333333333,无]

以上是关于在PySpark中尽力重试的主要内容,如果未能解决你的问题,请参考以下文章

与另一个片段通信的片段接口

片段在较低版本的android中无法正常工作

中继片段变量

在Pyspark中使用时,具有静态文件依赖性的python包无法读取静态文件

片段内的Android TabHost

以编程方式将 GoogleMap 添加到片段