Hive2.0以后,使用了新的API来读写ORC文件(https://orc.apache.org)。
本文中的代码,在本地使用Java程序生成ORC文件,然后加载到Hive表。
代码如下:
将该程序打成普通jar包:orcwriter.jar
另外,本地使用Java程序执行依赖的Jar包有:
- commons-collections-3.2.1.jar
- hadoop-auth-2.3.0-cdh5.0.0.jar
- hive-exec-2.1.0.jar
- slf4j-log4j12-1.7.7.jar
- commons-configuration-1.6.jar
- hadoop-common-2.3.0-cdh5.0.0.jar
- log4j-1.2.16.jar
- commons-logging-1.1.1.jar
- hadoop-hdfs-2.3.0-cdh5.0.0.jar
- slf4j-api-1.7.7.jar
run2.sh中封装了执行命令:
- #!/bin/bash
-
- PWD=$(dirname ${0})
- echo "PWD [${PWD}] .."
-
- JARS=`find -L "${PWD}" -name '*.jar' -printf '%p:'`
- echo "JARS [${JARS}] .."
-
- $JAVA_HOME/bin/java -cp ${JARS} com.lxw1234.hive.orc.TestORCWriter $*
-
执行./run2.sh
在Hive中建表并LOAD数据:
可以看到,生成的ORC文件可以正常使用。
大多情况下,还是建议在Hive中将文本文件转成ORC格式,这种用JAVA在本地生成ORC文件,属于特殊需求场景。