airflow hiveclihook连接到远程hive群集?

neekobn8  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(679)

我正在尝试从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

有人知道我哪里出错了吗?

xdyibdwo

xdyibdwo1#

当你可以使用 HiveCliOperator (不变的)用于连接和执行的 HQL 远程中的语句 Hive-Server ,唯一的要求是运行
Airflow worker 还必须包含 Hive 已安装二进制文件
这是因为hive cli命令 HiveCliHook 将运行在工人的机器通过良好的旧 bash . 在这个阶段,如果 Hive CLI 未安装在运行此代码的机器(即,您的气流工作者)中,它将像您的情况一样中断
直接解决方法是实现自己的 RemoteHiveCliOperator 那个
创建 SSHHook 到远程配置单元服务器计算机
像这样通过sshhook执行hql语句
事实上,这似乎是一个普遍的缺点,几乎所有的气流 Operator 默认情况下,他们希望在每个worker中安装必需的包。医生警告说
例如,如果使用hiveoperator,则需要在该框上安装HiveCLI

相关问题