Hadoop 在查询抛出异常时压缩配置单元外部表中的Json数据?

Hadoop 在查询抛出异常时压缩配置单元外部表中的Json数据?,hadoop,hive,cloudera,hiveql,cloudera-quickstart-vm,Hadoop,Hive,Cloudera,Hiveql,Cloudera Quickstart Vm,我通过以下步骤创建了外部表 Hive > ADD JAR /usr/lib/hive/lib/hive-serdes-1.0-SNAPSHOT.jar; Hive > set hive.exec.compress.output=true; Hive > set mapred.output.compress=true; Hive> set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipC

我通过以下步骤创建了外部表

Hive >  ADD JAR /usr/lib/hive/lib/hive-serdes-1.0-SNAPSHOT.jar;
Hive > set hive.exec.compress.output=true;
Hive > set mapred.output.compress=true;
Hive> set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
Hive> set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;

Hive >  CREATE EXTERNAL TABLE Json (id BIGINT,created_at STRING,source STRING,favorited BOOLEAN) ROW FORMAT SERDE  "com.cloudera.hive.serde.JSONSerDe"
LOCATION  /user/cloudera/ jsonGZ ";
我已经通过执行下面的命令压缩了我的Json文件

“ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming-2.6.0-cdh5.5.0.jar -Dmap.output.compress=true  -Dmap.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec -Dmapreduce.output.fileoutputformat.compress=true -Dmapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec -input /user/cloudera/json/ -output /user/cloudera/jsonGZ “
然后,当我运行“select*from json”时,我得到以下错误:

“OK Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.LinkedHashMap out of VALUE_NUMBER_INT token at “ 
Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: java.io.IOException: Start token not found where expected" after using "org.apache.hive.hcatalog.core(hive-hcatalog-core-0.13.0.jar)"
我还使用“org.apache.hive.hcatalog.data.JsonSerD”创建了另外一个表

Hive >  ADD JAR /usr/lib/hive-hactalog/share/ hactalog/ hive-hactalog-core.jar;

Hive > CREATE EXTERNAL TABLE Json 1(id BIGINT,created_at STRING,source STRING,favorited BOOLEAN) ROW FORMAT SERDE  "com.cloudera.hive.serde.JSONSerDe"
LOCATION  /user/cloudera/ jsonGZ ";
然后,当我运行“select*from json1;”时,我得到以下错误:

“OK Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.LinkedHashMap out of VALUE_NUMBER_INT token at “ 
Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: java.io.IOException: Start token not found where expected" after using "org.apache.hive.hcatalog.core(hive-hcatalog-core-0.13.0.jar)"

我是否遗漏了什么?如何解决此错误。

只需gzip文件并将它们按原样*.gz放入表位置


gzip filename

只需gzip您的文件,并将它们按原样*.gz放入表位置


gzip filename

请编辑您的问题,以包含命令中使用的精确字符。在某些情况下,您会有卷曲引号、缺少引号、空格和双引号-SQL字符串通常必须包含在单引号中,如“not”或“not”“。因此,这些查询中的一些看起来根本不起作用。然后,从没有压缩的情况下开始向后工作。请编辑您的问题,以包括命令中使用的精确字符。在某些情况下,您有卷引号、缺少引号、空格和双引号-SQL字符串通常必须包含在单引号中像这样的“不”或“不”。所以看起来这些查询中的一些根本不可能工作。然后,通过不压缩开始向后工作。