我有一个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。
谢谢!
答案 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属性 区分大小写。