在Amazon EMR上使用Hive 13.0.1时遇到奇怪的行为。 当我尝试使用UDF并运行运行hive -e" ..."的外部shell脚本时会发生这种情况。命令
我们一直在使用shell脚本动态地将分区添加到表中,并且从未在Hive 0.11中遇到任何问题
然而,在Hive 0.13.1中,以下简化示例中断了:
add jar myjar;
create temporary function myfunc as '...';
create external table mytable...
!hive -e "";
select myfunc(someCol) from mytable;
UDF实施课程中的结果' ...'在类路径中不存在
删除shell命令(!hive -e""),错误消失。 在shell和错误消失后再次添加jar和函数(仅添加没有jar的函数不会消除错误)。
这是已知行为还是一个错误,除了在每次使用之前重新加载jar和函数之外,我还能做什么吗?
答案 0 :(得分:1)
AFAIK - 这是它一直以来的方式。一个配置单元shell无法将添加到其子路径的附加jar传递给子shell。绝对不是功能定义。
我们在Qubole中提供Hive / Hadoop等作为服务,并且具有蜂巢引导的概念,在这种情况下,该引导用于捕获所有查询所需的公共语句。这被大多数用户广泛使用。 (告诫 - 我是Qubole和Hive的创始人之一 - 但会建议使用Qubole而不是EMR用于Hive)。