【发布时间】:2021-08-15 03:41:06
【问题描述】:
我正在尝试将 S3 中的 json 文件中的数据读取到我的 Hive 表中。如果列名和 json 键相同,则所有加载均正确。
但现在我想以嵌套 json 值进入特定列的方式读取数据(例如:for json
{"data1": {"key1": "value1"}}
我希望 data1.key1 值进入名为 data1_key1 的列;据我所知,SERDEPROPERTIES 可以实现这一点。
我的下一个问题是可以有多个 json 键,我希望键名是我的 Hive 表中的列值。
此外,根据这些键,进入其他列的键也会发生变化。
例如,我的 json 文件将是:
{"data1" : {"key1":"value1"}}
或
{"data2" : { "key2" : "value2"}}
这需要创建如下表:
col1 col2
数据1 值1
数据2值2
这可能吗?如果是应该怎么做?
【问题讨论】:
-
Hive 不支持动态列名。应该定义 Hive 表中的列。
-
@leftjoin:我同意。我们必须首先在不同的列中获取 data1 和 data2。然后将这些列中的json拆分成多列。