如何在 hive udf 中访问配置数据-方案汇总与对比

本文分析了一种在Hive UDF中因访问配置数据导致Hiveserver2卡死的问题,详细解释了Hive架构原理和SQL执行细节。提出了四种配置参数获取方案,包括使用HDFS文件、本地文件、Hive外表和内部SQL读取,并讨论了各自的优缺点及安全考虑。重点讨论了方案四是导致问题的原因,并提供了避免问题的细节分析。
摘要由CSDN通过智能技术生成

大家好!我是明哥!


近日我司有个大数据业务系统在某客户现场实时部署时,遇到了一个Hive udf的使用问题,这个问题比较难排查,因为涉及到对Hive的架构原理以及hive sql 解析优化和执行的细节的理解。在此跟大家分享总结下,希望对大家以后使用hive sql 尤其是udf 的编写能有所帮助。
 

一。问题现象

该客户使用的是 cdh6.2,对 hive 开启了 kerberos 安全认证也使用了sentry插件来进行 hive 表的权限管理,出于安全考量他们禁止在 udf 中直接访问hive 底层 hdfs 上的数据,所以我们的大数据业务系统将要获取的配置信息,即“交易日数据“定义为了 hive 表,然后在 udf 代码中通过建立到 hiveserver2 的 jdbc 连接然后执行 Statement.executeQuery("select close_date from ods_closedate") 的方式来获取交易日数据。

在测试时,通过 beeline 连接到 hiveserver2 然后通过 select hiveudf.lastexchangeday(20200102) 调用 udf 获取上一个交易日,但是实际执行时发现以上 udf 调用并不能成功获取到上一个交易日 20200101,观察发现客户端卡死且没有任何报错信息也没有结果,同时留意到链接同一个 hiveserver2实例的其它客户端能够正常连接到 hiveserver2 也能提交 sql,但是提交的sql 即使是最简单的 “show databases” ,客户端也是处于长时间卡死的状态且没有任何报错信息也没有任何结果。只有重启后 hiveserver2 才能正常对外提供服务。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明哥的IT随笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值