在单个节点上部署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运行失败了。 我不知道。有人帮帮我!
答案 0 :(得分:3)
在主节点上:
将您的RegexSerDe.jar
放入与您的hadoop发行版相关的hive连接器插件目录中。 (例如:对于hadoop2
分发,您可以将JAR文件放入../presto/plugin/hive-hadoop2/
)
确保RegexSerDe.jar
文件与此目录中存在的其他jar文件具有正确的所有权。
重新启动presto-server进程。 (sudo service presto-server restart
)。如果这不起作用,您可能需要使用启动器sudo /usr/lib/presto/bin/launcher restart
在所有从属节点上重复此操作!
答案 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。