Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 没有名为';伊皮顿';基于apachebeam的gcpdataflowrunner_Python_Google Cloud Platform_Google Cloud Dataflow_Apache Beam - Fatal编程技术网

Python 没有名为';伊皮顿';基于apachebeam的gcpdataflowrunner

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

我在Jupyter笔记本中设置了一个相当简单的ApacheBeam Python管道,并希望将其部署到Dataflow runner。我对这三个都是全新的!我正在使用Python3和ApacheBeam2.27.0内核

我的管道选项如下所示:

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_会话的行为不符合预期,但这种替代方法很好。