hive3.x导致外部表中压缩的(bz2)json出错

kcrjzv8t  于 2021-07-13  发布在  Hadoop
关注(0)|答案(1)|浏览(390)

我有一些json数据(大约60gb)必须加载到hiveexternal表中。我正在使用Hive3.x和Hadoop3.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/';

我还为serde加载了jar,如下所示:a DD JAR /usr/hive/lib/hive-hcatalog-core-3.1.2.jar; 如果我复制一个简单的文本json(或load),那么dml查询(select等)就可以正常工作。由于数据文件非常大,因此我已将其压缩(现在为20gb)。我已经将这个压缩文件加载到配置单元表(上面创建的)中。

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>

它可以很好地处理未压缩的数据。这有什么问题?
我试过一些这样的解决办法,但没有成功

7kjnsjlb

7kjnsjlb1#

我自己找到了解决办法。实际问题是有两列是json中的数组。它们应该Map到配置单元中的数组。我为schema获取的示例不包含这些数组。因此,通过将字段类型更改为 array<<string>> 一个专栏解决了我的问题。

相关问题