我使用Hive创建表存储序列文件。行格式是myserde.TestDeserializer
hiveserde-1.0.jar
在命令行中,我使用此命令添加jar文件:
hive ADD JAR hiveserde-1.0.jar
然后我创建一个表,文件加载成功。
但是现在我想运行它并使用mysql jdbc在客户端上创建一个表。 错误是:
SerDe:myserde.TestDeserializer不存在。
如何运行它?感谢
答案 0 :(得分:11)
所以,有一些选择。在所有这些中,安装Hive时,jar需要存在于您的群集上。当然,JDBC客户端代码可以在集群内部或外部的任何地方运行。
选项1:在运行任何其他HQL命令之前发出HQL查询:
ADD JAR hiveserde-1.0.jar
选项2:您可以更新您的hive-site.xml以获得
hive.aux.jars.path
属性设置为jar hiveserde-1.0.jar的完整路径
答案 1 :(得分:1)
转到你的hive-env.sh并附加到文件的底部:
export HIVE_AUX_JARS_PATH=$HIVE_AUX_JARS_PATH:/<path-to-jar>
然后您可以获取此文件。不理想,但它有效。
答案 2 :(得分:0)
您是说要通过jdbc创建表而不是在CLI中创建表?在这种情况下,您应该在运行jdbc代码时将jar添加到类路径中。
答案 3 :(得分:0)
是的,这可能有点令人困惑,似乎Hive从群集中读取的时间是一半,而另一半来自本地文件系统(安装了机器Hive服务器)。
要克服这个简单的.jar文件复制到Hive服务器计算机,然后您可以在Hive查询中引用它,例如:
add jar /tmp/json-serde.jar;
create table tweets (
name string,
address1 string,
address2 string,
address3 string,
postcode string
)
...
然后进入下一个问题;)