我使用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"
}
答案 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
。