1 Востаннє редагувалося BIgor (03.11.2020 17:35:44)

Тема: Запуск import-hive.sh за допомогою DAG Airflow. Просить "set HIVE_HOME

Запуск import-hive.sh за допомогою DAG Airflow. Просить "sset HIVE_HOME to the root of Hive installation. + Проблема з конфігураційними файлами
Я у цьому новачок. Мені потрібно запустити скрипт import-hive.sh, щоб оновити таблиці в Atlas за допомогою DAG Airflow. І я використовую в DAG щось таке:

    task = BashOperator (
        task_id = 'task_1',
        bash_command = "" "
    '/home/myhome/airflow/dags/run.sh'
    "" "
    dag=dag)

Де  run.sh - це скрипт для запуску import-hive.sh , і для автозаповнення логіна / пароля приблизно так:
   

 #! / usr / bin / expect -f
    set timeout -1
    spawn /usr/lib/atlas/apache-atlas-hive-hook-2.0.0/hook-bin/import-hive.sh
    expect ": -"
    send "admin \ n"
    expect ": -"
    send "admin \ n"
    expect eof

Якщо я запускаю run.sh вручну, він використовує один файл конфігурації (Using Hive configuration directory [/ usr / lib / hive / conf],) і відпацьовує ок.

Але коли я запускаю DAG backfill, я отримую:

{bash_operator.py:87} INFO - Temporary script location: / tmp / airflowtmpG / task_1EVU
{bash_operator.py:97} INFO - Running command:
'/home/myhome/airflow/dags/run.sh'
{bash_operator.py:106} INFO - Output:
{bash_operator.py:110} INFO - spawn /usr/lib/atlas/apache-atlas-hive-hook-2.0.0/hook-bin/import-hive.sh
{bash_operator.py:110} INFO - Using Hive configuration directory [/ etc / hive / conf]
{bash_operator.py:110} INFO - Please set HIVE_HOME to the root of Hive installation
{bash_operator.py:110} INFO - send: spawn id exp5 not open
{bash_operator.py:110} INFO - while executing
{bash_operator.py:110} INFO - "send" admin \ n ""
{bash_operator.py:110} INFO - (file "/opt/data-processing-dev/data-processing-fact-agg-gen-AIRFLOW_RELEASE-LATEST/run.sh" line 5)
{bash_operator.py:114} INFO - Command exited with return code 1
{models.py:1738} ERROR - Bash command failed

У цьому випадку використовується інший файл конфігурації (Using Hive configuration directory [/ etc / hive / conf]).
Хоча HIVE_HOME = / usr / lib / hive /
Мабуть скрипт import-hive.sh не запускається через різні конфігураційні файли?

І ще: 'Please set HIVE_HOME to the root of Hive installation'
Хоча я встановив HIVE_HOME = / usr / lib / hive / у всіх можливих .bashrc

Підкажіть, як можна це виправити

2

Re: Запуск import-hive.sh за допомогою DAG Airflow. Просить "set HIVE_HOME

BIgor написав:

Хоча я встановив HIVE_HOME = / usr / lib / hive / у всіх можливих .bashrc

Не зовсім розумію, чому пробіли в шляху директорії. Скільки бачив, завжди шлях вказуєтсья без пробілів: HIVE_HOME=/usr/lib/hive/. Лiпше навіть з лапками: HIVE_HOME="/usr/lib/hive/".

Однак бачу в прикладі, що там трохи інший шлях, нж ви призначили.

export HIVE_HOME="/usr/local/hive/apache-hive-2.3.3-bin"
export PATH="$HIVE_HOME/bin:$PATH"

Там ще є інші змінні, зокрема $HIVE_CONF_DIR для конфігураційної директорії, подивіться.

Потім треба буде сорснути змінні для середовища:

source ~/.bashrc
Подякували: leofun011

3

Re: Запуск import-hive.sh за допомогою DAG Airflow. Просить "set HIVE_HOME

Я на всі 79% впевнений що Ariflow не виконує код написаний в .bashrc .bashrc - то для юзерів.

Якщо треба мати змінну HIVE_HOME - задайте її прямо в run.sh перед тим як запускати import-hive.sh

Подякували: BIgor, leofun01, bebyk3

4 Востаннє редагувалося BIgor (04.11.2020 12:12:20)

Re: Запуск import-hive.sh за допомогою DAG Airflow. Просить "set HIVE_HOME

Насправді там нема пробілів, то мабуть через те, що воно виділен курсивом.
Дерикторія HIVE_HOME може бути трохи інша

5 Востаннє редагувалося BIgor (04.11.2020 12:11:41)

Re: Запуск import-hive.sh за допомогою DAG Airflow. Просить "set HIVE_HOME

Задайти прямо в скрипт допомогло!

Подякували: bunyk1