尝试在Google Composer(气流)中安装gcsfs时出现pypi erro

时间:2018-10-24 18:07:12

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

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

Composer后端超时。当前正在运行的任务是[stage:CP_COMPOSER_AGENT_RUNNING描述:“ Composer代理正在运行。最新的Agent阶段:stage:DEPLOYMENTS_UPDATED \ n。” response_timestamp {秒:1540331648纳米: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"  
    }

3 个答案:

答案 0 :(得分:0)

不幸的是,您的错误消息对我来说意义不大。

gcsfs是纯python代码,因此安装它不太可能出现任何问题-像pip或conda一样常见。依赖库是一堆Google依赖库,其中一些可能需要编译(我不知道),所以我建议尝试从日志中找出正在停顿的日志并与之一起使用。另一方面,这类问题通常可能是网络/间歇性问题,因此等待也可能会解决问题。

为了将来,我建议在conda周围安装设备,该设备不需要编译任何东西,并且通常在依赖项跟踪方面会更好。

答案 1 :(得分:0)

这与以下事实有关:Composer和Airflow具有静默依赖性,并且它们不同步。因此,如果gcsfs安装与Airflow依赖项存在冲突,则会收到此错误。更多详细信息here。唯一的解决方法(除了更新到11月28日的作曲家之外)是:

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

  

使用单独的Kubernetes Pod来运行各种作业,但这是一个   很大的变化,并且需要下文,我们对(GKE)不太熟悉。   这个特殊问题也可以通过在   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

```

答案 2 :(得分:0)

我还没有尝试过,但这可能会对您有所帮助。 通常,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

但是,您可以通过将在本地安装的软件包文件夹(即保险丝)上载到gs://<your_bukcet_name>/libs到Google Cloud Storage存储桶中来做到这一点,以便共享库。 然后,您可以将Google Composer中的LD_LIBRARY_PATH环境变量设置为/home/airflow/gcs/libs,以使GCC在该目录中查找共享库。

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