运行presto-cli warnning:SerDe org.apache.hadoop.hive.contrib.serde2.RegexSerDe不存在

时间:2013-11-16 15:57:34

标签: presto

在单个节点上部署presto。在运行Presto-cli时,我遇到了以下错误:

presto:default> select * from test1;
Query 20131116_233859_00005_5a2yh failed: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException SerDe org.apache.hadoop.hive.contrib.serde2.RegexSerDe does not exist)

配置单元正常运行。为什么prestodb失败了? 我的个人资料:

export JAVA_HOME=/usr/java
export JRE_HOME=/usr/java/jre
export HADOOP_HOME=/usr/hadoop
export HIVE_HOME=/usr/hive
export PRESTO_HOME=/usr/presto
export CLASSPATH=:.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME:`find /usr/hadoop -name '*.jar' | grep -v 'test' | grep -v 'example' | perl -e '@jars=<STDIN>;chomp @jars; print join(":",@jars);'`:$PRESTO_HOME/lib:$HADOOP/lib:$HIVE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PRESTO_HOME/bin:$HIVE_HOME/bin
export HADOOP_HEAPSIZE=4096

我知道了,当RegEx创建了一个hive表时,presto-cli运行失败了。 我不知道。有人帮帮我!

3 个答案:

答案 0 :(得分:3)

在主节点上:

  1. 将您的RegexSerDe.jar放入与您的hadoop发行版相关的hive连接器插件目录中。 (例如:对于hadoop2分发,您可以将JAR文件放入../presto/plugin/hive-hadoop2/

  2. 确保RegexSerDe.jar文件与此目录中存在的其他jar文件具有正确的所有权。

  3. 重新启动presto-server进程。 (sudo service presto-server restart)。如果这不起作用,您可能需要使用启动器sudo /usr/lib/presto/bin/launcher restart

  4. 重新启动

    在所有从属节点上重复此操作!

答案 1 :(得分:1)

按照上面提到的相同流程获取相同的错误,请提出任何建议。

查询失败:org / apache / hadoop / hive / serde2 / SerDe

使用hive-hadoop2版本将serde jar放在以下路径中

presto / plugin / hive-hadoop2 / hive-serde-1.0.0.jar 并重启presto。

答案 2 :(得分:0)

你必须将SerDe jar放在插件目录(plugin / hive-cdh4)中。 我没有使用RegexSerDe,但它适用于CSVSerDe。