Hive 3.在外部表中压缩(bz2) json导致错误



我有一些JSON数据(约60GB),我必须在Hive外部表加载。我用的是Hive 3。使用Hadoop 3.x。表的模式如下:

CREATE TABLE people(a string, liid string, link string, n string, t string, e string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.JsonSerDe'
STORED AS TEXTFILE LOCATION '/data/db/';

我已经为服务器加载了jar,如下所示:ADD JAR /usr/hive/lib/hive-hcatalog-core-3.1.2.jar;

如果我复制一个简单的文本json(或加载)然后DML查询(选择等)工作良好。由于数据文件非常大,因此我压缩了它(现在是20GB)。我已经将这个压缩文件加载到Hive表中(上面创建的)。

hive> select * from people;
OK
Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: java.io.IOException: Field name expected
Time taken: 0.096 seconds
hive> 

对于未压缩的数据可以正常工作。这有什么问题?

我已经尝试了一些类似的解决方案,但都不成功

我自己找到了解决办法。实际的问题是有两个列是json数组。它们应该映射到hive中的ARRAY。我为模式选取的示例不包含这些数组。因此,通过将一个列的字段类型更改为array<<string>>解决了我的问题。