Python 没有名为';伊皮顿';基于apachebeam的gcpdataflowrunner
我在Jupyter笔记本中设置了一个相当简单的ApacheBeam Python管道,并希望将其部署到Dataflow runner。我对这三个都是全新的!我正在使用Python3和ApacheBeam2.27.0内核 我的管道选项如下所示:Python 没有名为';伊皮顿';基于apachebeam的gcpdataflowrunner,python,google-cloud-platform,google-cloud-dataflow,apache-beam,Python,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,我在Jupyter笔记本中设置了一个相当简单的ApacheBeam Python管道,并希望将其部署到Dataflow runner。我对这三个都是全新的!我正在使用Python3和ApacheBeam2.27.0内核 我的管道选项如下所示: options.view_as(GoogleCloudOptions).project = 'inspired-studio-11111' options.view_as(GoogleCloudOptions).job_name = 'Dataflow T
options.view_as(GoogleCloudOptions).project = 'inspired-studio-11111'
options.view_as(GoogleCloudOptions).job_name = 'Dataflow Test Job2' + jobid
options.view_as(GoogleCloudOptions).region = 'us-central1'
options.view_as(GoogleCloudOptions).staging_location = 'gs://bucket/staging'
options.view_as(GoogleCloudOptions).temp_location = 'gs://bucket/temp'
options.view_as(SetupOptions).save_main_session = True
管道在笔记本中运行良好,并与GCP存储交互。当我将其设置为在GCP数据流运行程序上运行时,我始终会遇到以下异常:
来自worker的错误消息:Traceback(最后一次调用):文件“/usr/local/lib/python3.7/site packages/dataflow\u worker/batchworker.py”,第771行,在运行self.\u load\u main\u会话(self.local\u staging\u目录)文件“/usr/local/lib/python3.7/site packages/dataflow\u worker/batchworker.py”,第512行,在加载\u main\u会话pickler.load\u会话中(会话文件)文件“/usr/local/lib/python3.7/site packages/apache_beam/internal/pickler.py”,第318行,在load_会话返回dill.load_会话(文件路径)文件“/usr/local/lib/python3.7/site packages/dill/_dill.py”,第368行,在load_会话模块=unpickler.load()文件“/usr/local/lib/python3.7/site packages/_dill.py”中,第472行,在load obj=StockUnpickler.load(self)文件“/usr/local/lib/python3.7/site packages/dill/_dill.py”中,第462行,在find_类返回StockUnpickler.find_类(self,module,name)ModuleNotFoundError:没有名为“IPython”的模块
在我的笔记本中安装和导入ipython没有帮助。是否需要在GCP VM上的某个位置配置此选项?此错误通常是由于使用save_main_session=True选项造成的。有关确保工作人员在运行时有正确代码可用的其他方法的讨论,请参阅。这是我需要的提示。我设置了options.view_as(SetupOptions).save_main_session=False,然后在我的例子中,DOFN需要的所有导入及其依赖的所有类只需要在流程()中导入/定义方法本身。GCP数据流上的日志将告诉您丢失了哪些以及它们在哪里,直到它们全部被记录。如果您认为这是有意义的,因为DOFN可以作为单独的作业运行。仍然不确定为什么save_main_会话的行为不符合预期,但这种替代方法很好。