kylin通过beeline连接hive踩过的坑。

之前一直是通过cli连接hive,由于系统升级需要通过beeline连接。通过官方文档升级发现升级出现报错。

报错如下:

找不到usr/local/hive/conf,或者usr/local/hive/lib目录。

通过google搜索有没有解决方案,发现网上的说法几乎都是错误的。只能看源代码。

在kylin.sh中发现加载会自动加载find-hive-dependency.sh文件。内容如下:

client_mode=`bash ${KYLIN_HOME}/bin/get-properties.sh kylin.source.hive.client`
hive_env=
if [ "${client_mode}" == "beeline" ]
then
    beeline_shell=`$KYLIN_HOME/bin/get-properties.sh kylin.source.hive.beeline-shell`
    beeline_params=`bash ${KYLIN_HOME}/bin/get-properties.sh kylin.source.hive.beeline-params`
    hive_env=`${beeline_shell} ${hive_conf_properties} ${beeline_params} --outputformat=dsv -e set 2>&1 | grep 'env:CLASSPATH' `
else
    hive_env=`hive ${hive_conf_properties} -e set 2>&1 | grep 'env:CLASSPATH'`
fi

在这一段中发现kylin的在加载hive_env路径时候,如果是beeline方式会通过配置的beeline -e 访问server,然后通过返回信息grep到env:CLASSPATH拿到hive的路径。

在这个地方如果当前的hive-client和server端的路径不一致就会出现上述报错。

这个地方不知道官方是怎么想的(感觉有点尴尬,希望官方能做一下修改吧)。

我这边只能固定写死hive_conf_path, hive_exec_path.

hive_conf_path=/home/data/hive/conf
hive_exec_path=/home/data/hive/lib/hive-exec-2.1.1.jar

修改之后通过配置参数,然后重新启动就ok了。

kylin.source.hive.client=beeline
kylin.source.hive.beeline-params=-n data --hiveconf hive.security.authorization.sqlstd.confwhitelist.append='mapreduce.job.*|dfs.*' -u jdbc:hive2://*****

kylin.source.hive.beeline-shell=beeline

重启完成之后,通过cube build log可以发现修改成功了。

Create and distribute table, cmd: 
cat >/tmp/1556604774125.hql<<EOL
USE default;




 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值