【发布时间】:2016-02-28 14:04:15
【问题描述】:
我有一个包含 JSON 数据的外部表,我正在使用 JsonSerde 将数据填充到表中。我正确地填充了数据,当我查询数据时,我能够正确地看到结果。
但是,当我在该表上使用 desc 命令时,我得到了所有列 cmets 的 from deserializer 文本。
下面是建表ddl。
CREATE EXTERNAL TABLE IF NOT EXISTS my_table (
field1 string COMMENT 'This is a field1',
field2 int COMMENT 'This is a field2',
field3 string COMMENT 'This is a field3',
field4 double COMMENT 'This is a field4'
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde'
Location '/user/uszszb6/json_test/data';
数据文件中的条目。
{"field1":"data1","field2":100,"field3":"more data1","field4":123.001}
{"field1":"data2","field2":200,"field3":"more data2","field4":123.002}
{"field1":"data3","field2":300,"field3":"more data3","field4":123.003}
{"field1":"data4","field2":400,"field3":"more data4","field4":123.004}
当我使用命令 desc my_table 时,我得到以下输出。
+-----------+------------+--------------------+--+
| col_name | data_type | comment |
+-----------+------------+--------------------+--+
| field1 | string | from deserializer |
| field2 | int | from deserializer |
| field3 | string | from deserializer |
| field4 | double | from deserializer |
+-----------+------------+--------------------+--+
JsonSerde 无法正确捕获 cmets。我也尝试过使用其他 JSONSerde,例如
org.openx.data.jsonserde.JsonSerDe
org.apache.hive.hcatalog.data.JsonSerDe
com.amazon.elasticmapreduce.JsonSerde
但是 desc 命令的输出是一样的。这个bug有一张JIRA票[https://issues.apache.org/jira/browse/HIVE-6681][1]
根据票证它已在 0.13 版中解决,我使用的是 hive 1.2.1,但我仍然面临这个问题。
任何人都可以分享您对解决此问题的想法。
【问题讨论】: