我有一个json文件,我想在它上面创建Hive外部表,但有更多的描述性字段名称

时间:2016-01-07 09:02:32

标签: hive hiveql

我有一个JSON文件,我想在它上面创建Hive外部表,但是有更多的描述性字段名。基本上,我想将json文件中存在的描述性较小的字段名称映射到Hive外部表中更具描述性的字段。 / p>

e.g.
{"field1":"data1","field2":100}

蜂巢表:

Create External Table my_table (Name  string, Id  int)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde'
LOCATION '/path-to/my_table/';

其中Name指向field1,Id指向field2。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用此SerDe,它允许JSON数据和配置单元列之间的自定义映射:https://github.com/rcongiu/Hive-JSON-Serde

特别参见本部分:https://github.com/rcongiu/Hive-JSON-Serde#mapping-hive-keywords

因此,在您的情况下,您需要执行类似

的操作
CREATE EXTERNAL TABLE my_table(name STRING, id, INT)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
WITH SERDEPROPERTIES ( 
   "mapping.name" = "field1",
   "mapping.id" = "field2" ) 
LOCATION '/path-to/my_table/'

请注意,配置单元列名称不区分大小写,而JSON属性 区分大小写。