首页 > 解决方案 > 如何在 Google Cloud Platform 中的 Google AI Platform 中安装 Spark 依赖项

问题描述

在 Google Colab 中,当前目录是/myContent,并且该目录具有以下内容:

setup.py      spark-2.4.5-bin-hadoop2.7.tgz     trainer/

在培训师文件夹中,它有__init__.py task.py. task.py有我的 Python 代码,有import pyspark

以下是setup.py安装 spark 依赖项文件中的代码片段:

from setuptools import find_packages
from setuptools import setup

REQUIRED_PACKAGES = ['spark-2.4.5-bin-hadoop2.7.tgz']

setup(
    name='trainer',
    version='0.1',
    install_requires=REQUIRED_PACKAGES,
    packages=find_packages(),
    include_package_data=True,
    description='My training application package.'
)

当我向 Google AI Cloud 提交训练作业时,在/myContent目录中运行以下代码:

!gcloud ai-platform jobs submit training $JOB_NAME \
    --package-path $ACKAGE_PATH \
    --module-name $MODULE \
    --staging-bucket $STAGING_PATH \
    --scale-tier custom \
    --master-machine-type complex_model_l_gpu \
    --worker-machine-type complex_model_l_gpu \
    --worker-count 2 \
    --runtime-version 2.1 \
    --python-version 3.7 \
    --packages spark-2.4.5-bin-hadoop2.7.tgz \
    --job-dir $JOB_DIR \
    -- \
    --param_A=1 \
    --param_B=2 \

作业失败,日志中出现错误消息:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.7/tokenize.py", line 447, in open
    buffer = _builtin_open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-req-build-b_xhvahl/setup.py'

1)我已经提交setup.py到谷歌AI平台,为什么找不到那个py文件?

2)如何预先在Google AI Platform中安装spark依赖文件?在 Google Colab Jupyter Notebook 中,我总是在单元格中运行以下代码:

# install spark
%cd
!apt-get install openjdk-8-jdk-headless -qq 
!wget https://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz
!tar -xvf spark-2.4.5-bin-hadoop2.7.tgz > /dev/null
!pip install -q findspark
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/root/spark-2.4.5-bin-hadoop2.7"

谢谢

标签: pythonapache-sparkgoogle-cloud-platform

解决方案


  1. 我已经将 setup.py 提交到谷歌 AI 平台,为什么找不到那个 py 文件?

我复制了同样的错误,很可能问题是由文件 .tgz 引起的,因为支持的只是.tar.gzand .whl,请参阅手动构建添加自定义依赖项。在setup.py您引用压缩文件(spark-2.4.5-bin-hadoop2.7.tgz)时,但据我所知,该选项install_requires应包含 PYPI 包或具有所需依赖项的目录。

  1. 如何预先在 Google AI Platform 中安装 spark 依赖文件?在 Google Colab Jupyter Notebook 中,我总是在单元格中运行以下代码:

在 Jupyter 单元中,您将在设置SPARK_HOME变量时提取 .tgz 文件并安装 spark 二进制文件。这与使用文件的过程不同setup.py。我注意到火花文档说“ PySpark 现在在 pypi 中可用。安装只需运行 pip install pyspark ”;因此,为了使用import pyspark,您可以选择通过以下方式安装它:

  • 使用文件pyspark-3.0.0.tar.gz而不是 spark-2.4.5-bin-hadoop2.7.tgz。

  • 在 setup.py 文件中指定 pyspark,例如:install_requires=['pyspark>=2.4.5'],并按照指南正确配置setup.py文件。


推荐阅读