执行时发生错误select * from xxx
:
Failed with exception java.io.IOException:java.io.IOException: No LZO codec found, cannot run.
已完成故障排除:
检查了位于 $HADOOP_HOME/share/hadoop/common 中的所有 hadoop 节点的 hadoop-lzo.jar:
# ls $HADOOP_HOME/share/hadoop/common/ | grep lzo
hadoop-lzo-0.4.20.jar
检查在 $HADOOP_HOME/etc/hadoop/core-site.xml 中为所有 hadoop 节点配置的 LZO 编解码器:
<configuration>
...
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
</configuration>
我还在 mapreduce 中测试了读取 lzo 文件,它工作正常,所以我认为 hadoop-lzo 配置正确,但它在 hive 中不起作用。