Hadoop 配置单元中的复杂数据类型问题
我正在尝试使用复杂的数据类型在配置单元中创建一个表 我的一列是字符串数组,另一列是映射数组 将数据加载到表中后,当我尝试查询数据时,在第三列(映射数组)中没有得到所需的结果 以下是我的配置单元查询: 步骤1:Hadoop 配置单元中的复杂数据类型问题,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,我正在尝试使用复杂的数据类型在配置单元中创建一个表 我的一列是字符串数组,另一列是映射数组 将数据加载到表中后,当我尝试查询数据时,在第三列(映射数组)中没有得到所需的结果 以下是我的配置单元查询: 步骤1: create table transactiondb2(order_id int,billtype array<string>,paymenttype array<map<string,int>>)ROW FORMAT DELIMITED FIELDS
create table transactiondb2(order_id int,billtype array<string>,paymenttype array<map<string,int>>)ROW FORMAT
DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY '|'
MAP KEYS TERMINATED BY '#';
步骤3:
select * from transactiondb2;
我的输出如下:
1 A|B credit#10|cash#25|emi#30
2 C|D credit#157|cash#45|emi#35
3 X|Y credit#25|cash#38|emi#50
4 E|F credit#89|cash#105|emi#85
5 Z|A credit#7|cash#79|emi#105
6 D|Y credit#30|cash#100|emi#101
7 A|Z credit#50|cash#9|emi#85
8 B|Z credit#70|cash#38|emi#90
嗯
我的输入文件数据如下:
1 A|B credit#10|cash#25|emi#30
2 C|D credit#157|cash#45|emi#35
3 X|Y credit#25|cash#38|emi#50
4 E|F credit#89|cash#105|emi#85
5 Z|A credit#7|cash#79|emi#105
6 D|Y credit#30|cash#100|emi#101
7 A|Z credit#50|cash#9|emi#85
8 B|Z credit#70|cash#38|emi#90
我自己解决了
默认情况下,我们不需要明确提到一个映射数组。它从一个映射中获取值,然后按如下所示创建表并加载数据,然后您将获得所需的输出
create table complex(id int,bill array<string>,paytype map<string,int>)
ROW FORMAT
DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY '|'
MAP KEYS TERMINATED BY '#';
createtablecomplex(id-int、bill数组、paytype映射)
行格式
以“\t”结尾的分隔字段
以“|”结尾的集合项目
以“#”结尾的映射键;
create table complex(id int,bill array<string>,paytype map<string,int>)
ROW FORMAT
DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY '|'
MAP KEYS TERMINATED BY '#';