如何添加SerDe jar

时间:2012-12-25 18:11:57

标签: hadoop hive

我使用Hive创建表存储序列文件。行格式是myserde.TestDeserializer

中的serder类hiveserde-1.0.jar

在命令行中,我使用此命令添加jar文件:

  

hive ADD JAR hiveserde-1.0.jar

然后我创建一个表,文件加载成功。

但是现在我想运行它并使用mysql jdbc在客户端上创建一个表。 错误是:

  

SerDe:myserde.TestDeserializer不存在。

如何运行它?感谢

4 个答案:

答案 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
)
...

然后进入下一个问题;)