Dataproc 不导入存储在 Google Cloud Storage 存储分区中的 Python 模块

Posted

技术标签:

【中文标题】Dataproc 不导入存储在 Google Cloud Storage 存储分区中的 Python 模块【英文标题】:Dataproc doesn't import Python module stored in Google Cloud Storage bucket 【发布时间】:2020-04-29 14:50:16 【问题描述】:

我在 Google Cloud Storage (GCS) 存储桶上有以下结构:

gs://my_bucket/py_scripts/
    wrapper.py
    mymodule.py
    _init__.py

我正在通过 Dataproc 作为 pyspark 作业运行 wrapper.py,它在开始时使用 import mymodule 导入 mymodule,但作业返回错误说 no module named mymodule,即使它们位于同一路径。但是,这在 Unix 环境中可以正常工作。

注意_init__.py 是空的。还测试了from mymodule import myfunc,但返回相同的错误。

【问题讨论】:

【参考方案1】:

你能提供你的 pyspark 作业提交命令吗? 我怀疑你没有传递“--py-files”参数来提供其他 python 文件来工作。检查参考https://cloud.google.com/sdk/gcloud/reference/dataproc/jobs/submit/pyspark。 Dataproc 不会假定同一 GS 存储桶中的文件作为作业的输入。

【讨论】:

感谢您的回复。我正在使用这个作业提交命令 - gcloud beta dataproc workflow-templates add-job pyspark gs://mybucket/py_scripts/wrapper.py --step-id=01_python --workflow-template=wf_template --region europe-west1 - -(参数)。那么我应该如何在这个命令中传递另一个 mymodule.py 呢?还有多个依赖项呢,比如如果 mymodule.py 导入另一个脚本 mymodule2.py 等等。 您可以选择压缩文件。请检查这个讨论相同***.com/questions/61386462/…的***问题

以上是关于Dataproc 不导入存储在 Google Cloud Storage 存储分区中的 Python 模块的主要内容,如果未能解决你的问题,请参考以下文章

错误 - 使用 Apache Sqoop 和 Dataproc 从 SQL Server 导入 GCS

为啥 Spark(在 Google Dataproc 上)不使用所有 vcore?

来自 DataProc 集群的 Google Cloud Sdk

如何在 Google Dataproc 集群中安装 python 包

所有作业完成后自动关闭 Google Dataproc 集群

在不使用 Dataproc 的情况下将 GCP 与 PySpark 连接