问题背景:INSERT...VALUES is available starting in Hive 0.14;但我们在hive0.13中希望简单插入数据然后测试;
然后建表,表结构:
create table IF NOT EXISTS testj(
f1 string,
f2 string)
partitioned by (day int);
插入语句:
INSERT OVERWRITE TABLE testj PARTITION(day=20181023) SELECT 'qwe' as f1, 'qaz' as f2;
问题1:
ERROR [main]: ql.Driver (SessionState.java:printError(545)) - FAILED: NullPointerException null
java.lang.NullPointerException
at org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:37660)
原因:select要嵌套才行,改成下面格式即可:
INSERT OVERWRITE TABLE testj PARTITION(day=20181023) select * from (SELECT 'qwe' as f1, 'qaz' as f2) t;
参考:
问题2: RCFILE格式hive表数据win7远程查询失败,服务器上查询正常(未解决)
java.lang.RuntimeException: native snappy library not available: this version of libhadoop was built without snappy support.
at org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:64)
...
at org.apache.hadoop.hive.ql.io.RCFile$Reader.init(RCFile.java:1518)
...
应该是我从http://archive-primary.cloudera.com/cdh5/cdh/5/ 下载的hadoop-2.3.0-cdh5.0.0.tar.gz的lib\native目录为空的原因,但是我从服务器复制到win7无效。
参考:
https://download.csdn.net/download/cjber/9506779
https://blog.csdn.net/Aaron92/article/details/55045520?utm_source=blogxgwz3 ——博主说解决了,然鹅...
https://stackoverflow.com/questions/22150417/hadoop-mapreduce-java-lang-unsatisfiedlinkerror-org-apache-hadoop-util-nativec ——最后Jaigates说解决了,然鹅...
http://www.cnblogs.com/huamoai/p/4453324.html ——没效
上面这个blogs的方法我试了,没效果:
System.setProperty("java.library.path", "D:\\Program Files\\hadoop-2.3.0-cdh5.0.0\\bin;"+System.getProperty("java.library.path"))
println(System.getProperty("java.library.path"))
System.loadLibrary("hadoop") //这个好像只能放C:\Windows\system32 下才生效,加到HADOOP_HOME/bin下无法load
其实它相当于:
System.setProperty("hadoop.home.dir", "D:\\Program Files\\hadoop-2.3.0-cdh5.0.0")
这个是解决Could not locate executable null\bin\winutils.exe in the Hadoop binaries 问题的。
换了个hadoop版本又试了下,用https://download.csdn.net/download/mar_ljh/10442198替换bin,还是不行:
此时问题表现为:
java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z
at org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy(Native Method)
at org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:63)
.......
但是不连接服务器hive,直接在本地生成metastore_db,却一切正常执行。。。
暂时记录。