pypi erro при попытке установить gcsfs в google composer (airflow) - PullRequest
0 голосов
/ 24 октября 2018

Я использую google composer-1.0.0-airflow-1.9.0.Я использовал dask в одном из моих DAG и хотел настроить composer для использования dask.Один из необходимых пакетов для этой группы DAG - gcsfs.Когда я попытался установить его через веб-интерфейс, я получил следующее сообщение об ошибке:

Время ожидания Composer Backend.В настоящий момент выполняются следующие задачи: [stage: CP_COMPOSER_AGENT_RUNNING description: «Агент Composer работает. Последняя стадия агента: stage: DEPLOYMENTS_UPDATED \ n.»response_timestamp {seconds: 1540331648 nanos: 860000000}].

Обновлено:

Ошибка возникает из этой строки кода, когда dask пытается прочитать файл из сегмента gcp: dd.read_csv (bucket)log:

     [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

При попытке установить gcsfs в пользовательском интерфейсе google composer с использованием pypi выдается сообщение об ошибке:

 {
   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 голосов
/ 05 декабря 2018

Это связано с тем, что Composer и Airflow имеют тихие зависимости, и они не синхронизируются.Так что если gcsfs установка конфликтует с зависимостью Airflow, мы получаем эту ошибку.Подробнее здесь .Единственные обходные пути (кроме обновления до выпуска композитора от 28 ноября):

Источник : Спасибо Джейку Бизингеру (jake.biesinger@infusionsoft.com)

использовать отдельный модуль Kubernetes для выполнения различных заданий, но это большое изменение и требует нижеприведенной информации (GKE).Эта конкретная проблема также может быть решена путем установки dbt в PythonVirtualEnvOperator, а затем с помощью python_callable повторно использовать bin-каталог virtualenv, что-то вроде:

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

task = PythonVirtualEnvOperator (python_callable = _run_cmd_in_virtual_env, op_args = ('dbt',)) #это вызовет временно установленный двоичный файл dbt, что-то вроде /tmp/virtualenv-asdasd/bin/dbt.

`` `

0 голосов
/ 23 января 2019

Я не пробовал это, но это может вам помочь.Как правило, установка произвольных системных пакетов (например, fuse или любых других, которые становятся зависимостями того, что вы пытаетесь установить) не поддерживается Google Composer.Как обсуждалось здесь: https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!searchin/cloud-composer-discuss/sugimiyanto%7Csort:date/cloud-composer-discuss/jpxAGCPFkZo/mCx_P1LPCQAJ

Однако вы можете сделать это, загрузив папку пакета, в котором вы установили ее в локальном (то есть в виде плавкого предохранителя), в корзину Google Cloud Storage, например: gs://<your_bukcet_name>/libs, так что он становится общими библиотеками.Затем вы можете установить для переменной среды LD_LIBRARY_PATH в Google Composer значение /home/airflow/gcs/libs, чтобы GCC выполнял поиск общих библиотек в этом каталоге.

Затем попробуйте переустановить gcsfs с помощью pypi Google Composer.

0 голосов
/ 24 октября 2018

К сожалению, ваше сообщение об ошибке не имеет большого значения для меня.

gcsfs - это чистый код на Python, поэтому очень маловероятно, что что-то пойдет не так с его установкой - как это часто бывает с pip илиКонда.Библиотеки зависимостей - это куча библиотек Google, некоторые из которых могут потребовать компиляции (я не знаю), поэтому я бы предложил попытаться выяснить из журналов, какой из них останавливается, и взять его с собой.С другой стороны, такого рода вещи часто могут быть проблемой с сетью / периодической работой, поэтому ожидание также может исправить ситуацию.

В будущем я рекомендую основывать установки на conda, которая никогда не должна ничего компилировать икак правило, лучше при отслеживании зависимостей.

...