【问题标题】:pypi erro when try to install gcsfs in google composer(airflow)尝试在谷歌作曲家(气流)中安装 gcsfs 时出现 pypi 错误
【发布时间】:2018-10-24 18:07:12
【问题描述】:

我使用谷歌 composer-1.0.0-airflow-1.9.0。我在我的一个 DAG 中使用了 dask,并想设置作曲家以使用 dask。此 DAG 所需的软件包之一是 gcsfs。当我尝试通过 Web UI 安装它时,出现以下错误:

Composer 后端超时。当前正在运行的任务是 [stage: CP_COMPOSER_AGENT_RUNNING description: "Composer Agent Running. Latest Agent Stage: stage: DEPLOYMENTS_UPDATED\n ." response_timestamp { seconds: 1540331648 nanos: 860000000 } ].

更新:

当 dask 尝试从 gcp 存储桶读取文件时,错误来自这行代码:dd.read_csv(bucket) 日志:

     [2018-10-24 22:25:12,729] {base_task_runner.py:98} INFO - Subtask:   File "/usr/local/lib/python2.7/site-packages/dask/bytes/core.py", line 350, in get_fs_token_paths
     [2018-10-24 22:25:12,733] {base_task_runner.py:98} INFO - Subtask:     fs, fs_token = get_fs(protocol, options)
     [2018-10-24 22:25:12,735] {base_task_runner.py:98} INFO - Subtask:   File "/usr/local/lib/python2.7/site-packages/dask/bytes/core.py", line 473, in get_fs
     [2018-10-24 22:25:12,740] {base_task_runner.py:98} INFO - Subtask:     "Need to install `gcsfs` library for Google Cloud Storage support\n"
     [2018-10-24 22:25:12,741] {base_task_runner.py:98} INFO - Subtask:   File "/usr/local/lib/python2.7/site-packages/dask/utils.py", line 94, in import_required
     [2018-10-24 22:25:12,748] {base_task_runner.py:98} INFO - Subtask:     raise RuntimeError(error_msg)
     [2018-10-24 22:25:12,751] {base_task_runner.py:98} INFO - Subtask: RuntimeError: Need to install `gcsfs` library for Google Cloud Storage support
     [2018-10-24 22:25:12,756] {base_task_runner.py:98} INFO - Subtask:     conda install gcsfs -c conda-forge
     [2018-10-24 22:25:12,758] {base_task_runner.py:98} INFO - Subtask:     or
     [2018-10-24 22:25:12,762] {base_task_runner.py:98} INFO - Subtask:     pip install gcsfs

当尝试使用 pypi 在 google composer UI 中安装 gcsfs 时出现以下错误:

 {
   insertId:  "17ks763f726w1i"  
   logName:  "projects/xxxxxxxxx/logs/airflow-worker"  
   receiveTimestamp:  "2018-10-25T15:42:24.935880717Z"  
   resource: {…}  
   severity:  "ERROR"  
    textPayload:  "Traceback (most recent call last):
    File "/usr/local/bin/gcsfuse", line 7, in <module>
    from gcsfs.cli.gcsfuse import main
    File "/usr/local/lib/python2.7/site- 
     packages/gcsfs/cli/gcsfuse.py", line 3, in <module>
       fuse import FUSE
     ImportError: No module named fuse
    "  
   timestamp:  "2018-10-25T15:41:53Z"  
    }

【问题讨论】:

标签: google-cloud-storage airflow dask pypi google-cloud-composer


【解决方案1】:

很遗憾,您的错误信息对我来说意义不大。

gcsfs 是纯 Python 代码,因此安装它不太可能出现任何问题 - 就像 pip 或 conda 一样。依赖库是一堆 google 的,其中一些可能需要编译(我不知道),所以我建议尝试从日志中找出哪个正在停止并与它们一起使用。另一方面,这种事情往往是网络/间歇性问题,所以等待也可以解决问题。

对于未来,我建议基于 conda 进行安装,它永远不需要编译任何东西,而且通常更擅长依赖跟踪。

【讨论】:

【解决方案2】:

这与 Composer 和 Airflow 具有静默依赖关系并且它们不同步的事实有关。因此,如果gcsfs 安装与 Airflow 依赖项发生冲突,我们会收到此错误。更多详情here。唯一的解决方法(除了更新到 11 月 28 日发布的 composer)是:

Source:感谢 Jake Biesinger (jake.biesinger@infusionsoft.com)

使用单独的 Kubernetes Pod 来运行各种作业,但它是一个 大的变化,需要我们不太熟悉的基础设施(GKE)。 这个特殊问题也可以通过安装 dbt 来解决 PythonVirtualEnvOperator,然后让 python_callable 重新使用 virtualenv 的 bin 目录,类似于:

``` def _run_cmd_in_virtual_env(cmd):
subprocess.check_call(os.path.join(os.path.split(sys.argv[0])[0], cmd)

任务 = PythonVirtualEnvOperator(python_callable=_run_cmd_in_virtual_env, op_args=('dbt',)) # 这将调用临时安装的 dbt 二进制,类似于/tmp/virtualenv-asdasd/bin/dbt

```

【讨论】:

    【解决方案3】:

    我还没有尝试过,但这可能会对您有所帮助。 通常,Google Composer 不支持安装任意系统包(如 fuse 或任何成为您尝试安装的依赖项的任何东西)。正如这里所讨论的:https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!searchin/cloud-composer-discuss/sugimiyanto%7Csort:date/cloud-composer-discuss/jpxAGCPFkZo/mCx_P1LPCQAJ

    但是,您可以通过将已安装在本地(即 fuse)的包文件夹上传到您的 Google Cloud Storage 存储桶(例如:gs://&lt;your_bukcet_name&gt;/libs)来执行此操作,以便它成为共享库。 然后,您可以将 Google Composer 中的 LD_LIBRARY_PATH 环境变量设置为 /home/airflow/gcs/libs,让 GCC 在该目录中查找共享库。

    然后,尝试使用 pypi Google Composer 重新安装 gcsfs

    【讨论】:

      猜你喜欢
      • 2014-10-06
      • 2019-01-29
      • 2016-02-14
      • 2020-06-29
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2019-11-28
      相关资源
      最近更新 更多