是否将HiveCliHook连接到远程配置单元群集?

是否将HiveCliHook连接到远程配置单元群集?,hive,airflow,Hive,Airflow,我正在尝试从Airflow的本地副本连接到我的hive服务器,但HiveCliHook似乎正在尝试连接到我的hive本地副本 我正在运行以下命令来测试它: import airflow from airflow.models import Connection from airflow.hooks.hive_hooks import HiveCliHook usr = 'myusername' pss = 'mypass' session = airflow.settings.Sessio

我正在尝试从Airflow的本地副本连接到我的hive服务器,但HiveCliHook似乎正在尝试连接到我的hive本地副本

我正在运行以下命令来测试它:

import airflow
from airflow.models import Connection
from airflow.hooks.hive_hooks import  HiveCliHook

usr = 'myusername'
pss = 'mypass'

session = airflow.settings.Session()
hive_cli = session.query(Connection).filter(Connection.conn_id == 'hive_cli_default').all()[0]

hive_cli.host = 'hive_server.test.mydomain.com'
hive_cli.port = '9083'
hive_cli.login = usr
hive_cli.password = pss
hive_cli.schema = 'default'

session.commit()

hive = HiveCliHook()

hive.run_cli("select 1")
这会引发以下错误:

[2018-11-28 13:23:22,667] {base_hook.py:83} INFO - Using connection to: hive_server.test.mydomain.com
[2018-11-28 13:24:50,891] {hive_hooks.py:220} INFO - hive -f /tmp/airflow_hiveop_2Fdl2I/tmpBFoGp7  
[2018-11-28 13:24:55,548] {hive_hooks.py:235} INFO - Logging initialized using configuration in jar:file:/usr/local/apache-hive-2.3.4-bin/lib/hive-common-2.3.4.jar!/hive-log4j2.properties Async: true  
[2018-11-28 13:25:01,776] {hive_hooks.py:235} INFO - FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
有人知道我哪里出错了吗?

  • 虽然您可以使用
    HiveClioOperator
    (未更改)连接和执行远程
    Hive Server
    中的
    HQL
    语句,但唯一的要求是运行
    Airflow
    worker的框还必须包含安装的
    Hive
    二进制文件

  • 这是因为将通过良好的旧
    bash
    在工作机中运行,如果运行此代码的计算机(即您的Airflow worker)中未安装
    Hive CLI
    ,它将像您的情况一样损坏


直接的解决方法是实现您自己的
RemoteHiveCliOperator

  • 创建到远程配置单元服务器计算机的
  • 并通过类似SSHHook的方式执行HQL语句

事实上,这似乎是几乎所有Airflow
操作员的普遍缺点,默认情况下,他们希望每个工人都安装必要的软件包。政府对此提出警告

例如,如果使用HiveOperator,则需要配置配置单元CLI 安装在那个盒子上


你能弄明白吗?我的猜测是(和
操作符
),这一个也只在本地
蜂巢
服务器上工作,并且必须与一起使用,以便向远程蜂巢服务器发出查询。我有点困惑,因为在这个过程中,它们清楚地说
。例如,如果您使用蜂巢操作符,需要将配置单元CLI安装在该框上。
但是,查看配置单元CLI,我看不出它在远程
配置单元
服务器上不起作用的任何原因。请注意,通过
SSH执行命令可能存在断开连接的风险。(使用)虽然它不太可能打扰您,但如果容错性在您的优先级上非常高,您可以注意到
EMR步骤
API的固有限制是