web-dev-qa-db-fra.com

Pendant le flux d'air initdb, ImportError: impossible d'importer le nom HiveOperator

J'ai récemment installé airflow pour mes flux de travail. Lors de la création de mon projet, j'ai exécuté la commande suivante:

airflow initdb

qui a renvoyé l'erreur suivante:

[2016-08-15 11:17:00,314] {__init__.py:36} INFO - Using executor SequentialExecutor
DB: sqlite:////Users/mikhilraj/airflow/airflow.db
[2016-08-15 11:17:01,319] {db.py:222} INFO - Creating tables
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
ERROR [airflow.models.DagBag] Failed to import: /usr/local/lib/python2.7/site-packages/airflow/example_dags/example_Twitter_dag.py
Traceback (most recent call last):
    File "/usr/local/lib/python2.7/site-packages/airflow/models.py", line 247, in process_file
       m = imp.load_source(mod_name, file path)
    File "/usr/local/lib/python2.7/site-packages/airflow/example_dags/example_Twitter_dag.py", line 26, in <module>
       from airflow.operators import BashOperator, HiveOperator, PythonOperator
ImportError: cannot import name HiveOperator
Done.

J'ai vérifié des problèmes similaires sur Internet, ce qui m'a suggéré d'installer airflow[Hive], pyhs2 mais cela ne semble pas fonctionner.

15
Rusty

Utilisez-vous la HiveOperator? Il semble que l'erreur que vous obtenez est due à l'un des exemples de dags. En production, vous devez probablement définir load_examples sur False et installer airflow[Hive] uniquement si vous utilisez HiveOperator.

Cela étant dit, vous ne savez pas pourquoi airflow[Hive] ne vous suffit pas. Vous pouvez essayer d'installer airflow[Hive,hdfs,jdbc] mais le flux d'air [Hive] devrait suffire à supprimer l'erreur d'importation HiveOperator. Pourriez-vous peut-être ajouter quelle autre erreur vous obtenez?

22
Vineet Goel
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/airflow/models.py", line 247, in process_file
    m = imp.load_source(mod_name, filepath)
  File "/usr/local/lib/python2.7/dist-packages/airflow/example_dags/example_Twitter_dag.py", line 26, in <module>
    from airflow.operators import BashOperator, HiveOperator, PythonOperator
ImportError: cannot import name HiveOperator

Si vous souhaitez continuer à installer des exemples de données ... pour Ubuntu 14.04, veuillez utiliser cette méthode avec python 2.7. (testé à DO)

1.apt-get update

2.apt-get installez python-pip python-dev build-essential

3.pip installer --upgrade pip

3a.which pip #/usr/local/bin/pip

3b.pip -V #pip 9.0.1 à partir de /usr/local/lib/python2.7/dist-packages (python 2.7)

4.pip install --upgrade virtualenv

(La tâche 5 est facultative)

5.apt-get install sqlite3 libsqlite3-dev

https://askubuntu.com/questions/683601/how-to-upgrade-python-setuptools-12-2-on-ubuntu-15-04

6.apt-get remove python-setuptools

7.pip installer -U pip setuptools

8.export AIRFLOW_HOME = ~/flux d'air

9.pip installer le flux d'air

10.pip installer le flux d'air [Hive]

11.airflow initdb

Vous obtiendrez cette réponse ci-dessous

[2017-02-01 12:04:28,289] {__init__.py:36} INFO - Using executor SequentialExecutor
[2017-02-01 12:04:28,350] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python2.7/lib2to3/Grammar.txt
[2017-02-01 12:04:28,376] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python2.7/lib2to3/PatternGrammar.txt
DB: sqlite:////root/airflow/airflow.db
[2017-02-01 12:04:28,522] {db.py:222} INFO - Creating tables
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
Done.

NOTE: Veuillez appliquer la commande Sudo nécessaire, le cas échéant

2

Vérifiez si l'opérateur Hive est importé dans le fichier dag? Sinon, vous pouvez faire quelque chose comme:

from airflow.operators.Hive_operator import HiveOperator

0
Ritesh Varyani