如何将键值对加载到Hive表中?

4
以下是我的数据集:
Jun name="balaji" id=101

Mar name="kumar" id=102

创建表:

create table sample(month string,name string, id int)
row format delimited fields terminated by 'space' map keys terminated by '=';

结果:

select * from sample;      
JUN name="balaji" NULL
Mar name="kumar" NULL

期望结果:

JUN balaji 101

Mar kumar 102

请帮我解决这个问题。
1个回答

2

创建如下表格:

create table sample(mnth string,names map<string,string>,ids map<string,int>)
row format delimited fields terminated by ' ' map keys terminated by '=';

选择查询应该是:

  select mnth,names["name"],ids["id"]  from sample;

    result: 
      Jun   "balaji"    101
      Mar   "kumar" 102

如果你从示例中执行 select *
   Jun  {"name":"\"balaji\""}   {"id":101}
   Mar  {"name":"\"kumar\""}    {"id":102}

要访问地图中的每个值,您需要像这样传递:names["name"]


下面的数据集是否可以创建表格:name="balaji" id=100 name="kumar" fname="some" id=102数据将动态更改,没有适当的模式。如何将这种类型的数据加载到Hive表中? - thambisetty
Hive 不会根据遇到的数据构建动态模式。你可以在另一个带有数据集的问题中发布它,也许人们会帮助你。 - Sravan K Reddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接