是否将HiveCliHook连接到远程配置单元群集?
我正在尝试从Airflow的本地副本连接到我的hive服务器,但HiveCliHook似乎正在尝试连接到我的hive本地副本 我正在运行以下命令来测试它:是否将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
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
worker的框还必须包含安装的Airflow
二进制文件Hive
- 这是因为将通过良好的旧
在工作机中运行,如果运行此代码的计算机(即您的Airflow worker)中未安装bash
,它将像您的情况一样损坏Hive CLI
直接的解决方法是实现您自己的
RemoteHiveCliOperator
- 创建到远程配置单元服务器计算机的
- 并通过类似SSHHook的方式执行HQL语句
事实上,这似乎是几乎所有Airflow
操作员的普遍缺点,默认情况下,他们希望每个工人都安装必要的软件包。政府对此提出警告
例如,如果使用HiveOperator,则需要配置配置单元CLI
安装在那个盒子上
你能弄明白吗?我的猜测是(和操作符
),这一个也只在本地蜂巢
服务器上工作,并且必须与一起使用,以便向远程蜂巢服务器发出查询。我有点困惑,因为在这个过程中,它们清楚地说。例如,如果您使用蜂巢操作符,需要将配置单元CLI安装在该框上。
但是,查看配置单元CLI,我看不出它在远程配置单元
服务器上不起作用的任何原因。请注意,通过SSH执行命令可能存在断开连接的风险。(使用)虽然它不太可能打扰您,但如果容错性在您的优先级上非常高,您可以注意到EMR步骤
API的固有限制是