pyspark流无法从具有广播变量的检查点恢复

问题描述

我创建了一个具有检查点和广播变量的pyspark流。第一次启动成功,但是当我希望它从检查点恢复时,出现了问题:

Caused by: org.apache.spark.SparkException: An exception was raised by Python:
Traceback (most recent call last):
  File "/usr/local/python3/lib/python3.5/site-packages/pyspark/streaming/util.py",line 123,in loads
    f,wrap_func,deserializers = self.serializer.loads(bytes(data))
  File "/usr/local/python3/lib/python3.5/site-packages/pyspark/serializers.py",line 580,in loads
    return pickle.loads(obj,encoding=encoding)
  File "/usr/local/python3/lib/python3.5/site-packages/pyspark/broadcast.py",line 46,in _from_id
    raise Exception("broadcast variable '%s' not loaded!" % bid)
Exception: broadcast variable '1' not loaded!

官方中说,您必须创建延迟实例化的单例实例,然后我创建一个方法

    def get_broadcast_tables(self,table: str):
        if table not in globals():
            globals()[table] = self.sc.broadcast(table)
        return globals()[table]

我将其与bc = self.get_broadcast_tables("my_table")一起使用,但仍然出错,我该如何处理?

我的spark版本是2.4.3,而python版本是3.5。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)