将map< string,string>转换为hive中的字符串

0sgqnhkj  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(3636)

有谁能帮我解决这个问题,我们如何转换 map<string,string> 键入到 string 配置单元中的数据类型?

tv6aics1

tv6aics11#

分解Map,然后将键与值连接起来,收集所有key:value pairs 并使用concat\u ws连接数组。
演示:

with test_data as (
select stack(2,
             1, map('key1', 'val1', 'key2', 'val2'),
             2, map('key1', 'val1', 'key2', 'val2')
            ) as (id, map_col)
)

select id, map_col as original_map,
       concat_ws(',',collect_set(concat(m.key,':', m.val))) map_str
  from test_data d
       lateral view explode(map_col) m as key, val
 group by id, map_col

结果:

id   original_map                   map_str
1   {"key1":"val1","key2":"val2"}   key1:val1,key2:val2
2   {"key1":"val1","key2":"val2"}   key1:val1,key2:val2

连接时可以使用其他一些分隔符。

相关问题