我正在使用pyspark流式传输并启用了检查点。 如果作业失败并且我使用保存的检查点重新启动,则会出现异常 ImportError:没有名为_winreg的模块。
如果删除检查点并开始工作,则没有问题。
我在Ubuntu上运行它。 Pyspark应用程序作为jupyter笔记本的一部分运行。重新启动笔记本时发生故障。此时,程序应该读取检查点并从上次消耗的偏移开始但是失败。 以下命令用于通过pyspark启动笔记本: IPYTHON_OPTS =" notebook --ip = 0.0.0.0"的/ opt /火花/ bin中/ pyspark
这是我创建流式上下文的方式:
ssc = StreamingContext.getActiveOrCreate("/mnt/secure/checkpoints/" + app_name, lambda : create_streaming_context(app_name, batch_interval, max_rate_per_partition))
下面的是异常追踪的一部分:
文件" /usr/lib/python2.7/dist-packages/scipy/lib/six.py",第105行,在_resolve中 return _import_module(self.mod) 文件" /usr/lib/python2.7/dist-packages/scipy/lib/six.py",第76行,在_import_module中 导入(名称) ImportError:没有名为_winreg
的模块at org.apache.spark.util.Utils $ .tryOrIOException(Utils.scala:1207) 在org.apache.spark.streaming.api.python.TransformFunction.writeObject(PythonDStream.scala:100) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 在java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)