我使用配置单元创建表存储序列文件。行格式为serder类 myserde.TestDeserializer 在 hiveserde-1.0.jar 在命令行中,我使用以下命令添加jar文件:配置单元添加jar hiveserde-1.0.jar然后我创建了一个表,文件加载成功。但是现在我想运行它并使用mysql jdbc在客户机上创建一个表。错误是:serde:myserde.testdeserializer不存在。如何运行?谢谢
myserde.TestDeserializer
hiveserde-1.0.jar
lfapxunr1#
转到hive-env.sh并附加到文件的底部:
export HIVE_AUX_JARS_PATH=$HIVE_AUX_JARS_PATH:/<path-to-jar>
然后您就可以找到这个文件的来源。不太理想,但很管用。
xoshrz7s2#
是的,这可能有点混乱,似乎一半的时间配置单元从集群读取,另一半时间从本地文件系统读取(安装了机器配置单元服务器)。要克服这个简单的问题,请将.jar文件复制到配置单元服务器计算机,然后您可以在配置单元查询中引用它,例如:
add jar /tmp/json-serde.jar; create table tweets ( name string, address1 string, address2 string, address3 string, postcode string ) ...
然后讨论下一个问题;)
brvekthn3#
您是说您希望通过jdbc而不是cli创建表吗?在这种情况下,应该在运行jdbc代码时将jar添加到类路径中。
iecba09b4#
所以,有几个选择。在所有这些配置中,jar都需要存在于安装了hive的集群中。当然,jdbc客户机代码可以从集群内外的任何地方运行。选项1:在运行任何其他hql命令之前发出hql查询: ADD JAR hiveserde-1.0.jar 选项2:您可以更新hive-site.xml以获得 hive.aux.jars.path 属性设置为jar hiveserde-1.0.jar的完整路径
ADD JAR hiveserde-1.0.jar
hive.aux.jars.path
4条答案
按热度按时间lfapxunr1#
转到hive-env.sh并附加到文件的底部:
然后您就可以找到这个文件的来源。不太理想,但很管用。
xoshrz7s2#
是的,这可能有点混乱,似乎一半的时间配置单元从集群读取,另一半时间从本地文件系统读取(安装了机器配置单元服务器)。
要克服这个简单的问题,请将.jar文件复制到配置单元服务器计算机,然后您可以在配置单元查询中引用它,例如:
然后讨论下一个问题;)
brvekthn3#
您是说您希望通过jdbc而不是cli创建表吗?在这种情况下,应该在运行jdbc代码时将jar添加到类路径中。
iecba09b4#
所以,有几个选择。在所有这些配置中,jar都需要存在于安装了hive的集群中。当然,jdbc客户机代码可以从集群内外的任何地方运行。
选项1:在运行任何其他hql命令之前发出hql查询:
ADD JAR hiveserde-1.0.jar
选项2:您可以更新hive-site.xml以获得hive.aux.jars.path
属性设置为jar hiveserde-1.0.jar的完整路径