【问题标题】:Cloud Dataflow Python: Failed to install packages: failed to install workflowCloud Dataflow Python:安装包失败:安装工作流失败
【发布时间】:2018-02-09 16:58:49
【问题描述】:

我正在尝试在 DataflowRunner 上测试我的数据流管道。我的代码总是卡在 1 小时 1 分钟并说:数据流似乎卡住了。在挖掘 Dataflow 堆栈驱动程序的堆栈跟踪时,我遇到错误说 Failed to install packages: failed to install workflow: exit status 1。我看到其他堆栈溢出消息说这可能是当 pip 包不兼容时引起的。这导致我的工作人员启动总是失败。

这是我当前的 setup.py。有人可以帮我理解我所缺少的。作业编号为 2018-02-09_08_22_34-6196858167817670597。

setup.py

from setuptools import setup, find_packages


requires = [
            'numpy==1.14.0',
            'google-cloud-storage==1.7.0',
            'pandas==0.22.0',
            'sqlalchemy-vertica[pyodbc,turbodbc,vertica-python]==0.2.5',
            'sqlalchemy==1.2.2',
            'apache_beam[gcp]==2.2.0',
            'google-cloud-dataflow==2.2.0'
            ]

setup(
    name="dataflow_pipeline_dependencies",
    version="1.0.0",
    description="Beam pipeline for flattening ism data",
    packages=find_packages(),
    install_requires=requires
)

【问题讨论】:

    标签: python google-cloud-dataflow apache-beam


    【解决方案1】:

    setup.py 所需的包中包含“工作流”包。包含后错误已解决。

    from setuptools import setup, find_packages
    
    
    requires = [
                'numpy==1.14.0',
                'google-cloud-storage==1.7.0',
                'pandas==0.22.0',
                'sqlalchemy-vertica[pyodbc,turbodbc,vertica-python]==0.2.5',
                'sqlalchemy==1.2.2',
                'apache_beam[gcp]==2.2.0',
                'google-cloud-dataflow==2.2.0',
                'workflow' # Include this line
                ]
    
    setup(
        name="dataflow_pipeline_dependencies",
        version="1.0.0",
        description="Beam pipeline for flattening ism data",
        packages=find_packages(),
        install_requires=requires
    )
    

    【讨论】:

      【解决方案2】:

      所以我发现在这种情况下工作流不是 pypi 包,而是由 Dataflow 创建的包含源代码的 .tar 的名称。 Dataflow 将压缩您的源代码并在您的暂存环境中创建一个 workflow.tar 文件,然后它将尝试运行 pip install workflow.tar。如果此安装出现任何问题,它将无法将软件包安装到工作人员上。

      我的问题通过以下几件事得到解决:1) 我在要求中添加了 6==1.10.0,因为我发现:工作流程失败。原因:(35af2d4d3e5569e4):Dataflow 似乎卡住了,最新版本的 6 存在问题。 2)我意识到 sqlalchemy-vertica 和 sqlalchemy 不同步并且依赖版本存在问题。因此,我消除了对两者的需求,并找到了不同的 vertica 客户端。

      【讨论】:

        【解决方案3】:

        我不是处理大量 Python 包以及如何管理所有版本、不兼容性以及每个人的需求和需求的天才。

        但是,我可以阅读错误消息。

        在您的情况下,消息显示“安装工作流失败”。在谷歌快速搜索后,我发现 "workflow" 实际上是一个 Python 包。

        所以错误只是抱怨您没有安装workflow,并且尝试这样做失败了。

        解决这个问题

        • 从此PyPI 链接安装workflow。这是 Google 向我展示的最新版本。

        或者

        • 做常规的pip install workflow

        任何一种方法都应该安装所需的包。 安装后,该特定错误消息应该会消失。

        希望这个回答对你有帮助!

        【讨论】:

        • 嗨,迈克尔,感谢您的回复。我已经发现并解决了这个问题,并在我的编辑中包含了解决方案。
        • 不客气。我建议您创建自己的答案并接受它,以便其他人知道该问题已得到解答和解决。
        【解决方案4】:

        您的里程可能会有所不同,但对我来说,以上都不起作用(Python 3.7)。

        相反,解决方案似乎是将我的依赖项放在 requirements.txt 文件中,然后将其他所有内容放在 setup.py 中。重要的是我requirements.txt 行加载到install_requires 属性中。无论我以何种方式做到这一点,包括workflow 与否,拥有install_requires 似乎都会导致我出现这个错误。

        相反,我的setup.py 根本没有指定依赖项。我在运行管道时同时给出了--requirements_file--setup_file 参数。这为我解决了这个问题,并且管道的构建和启动方式存在显着差异,因为依赖项以这种方式存储在暂存位置,而之前不是。

        例如:

        setup.py

        import setuptools
        
        setuptools.setup(
            name='my_pipeline',
            version='0.0.0',
            packages=setuptools.find_packages()
        )
        

        requirements.txt

        google-cloud-bigquery==1.24.0
        google-cloud-storage==1.25.0
        jinja2==2.11.1
        [...etc...]
        

        run_pipeline.sh

        #!/usr/bin/env bash
        
        [...code to set vars...]
        
        if [ "${1}" = "dataflow" ]; then
          RUNNER="--runner DataflowRunner"
        fi
        
        python "${PIPELINE_FILE}" \
            --output "${OUTPUT}" \
            --project myproject \
            --region us-west1 \
            --temp_location "${TEMP}" \
            --staging_location "${STAGING}" \
            --no_use_public_ips \
            --requirements_file requirements.txt \
            --setup_file "./setup.py" \
            ${RUNNER}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-04
          • 2021-08-16
          • 2018-05-26
          • 2018-11-11
          • 2019-11-19
          • 1970-01-01
          • 1970-01-01
          • 2017-10-26
          相关资源
          最近更新 更多