hive array、map、struct使用
3494 ワード
hiveは複合データ型を提供します.
Structs:structs内部のデータは、DOT(.)によってアクセスできます.例えば、テーブル内のcの列のタイプはSTRUCT{a INT;b INT}であり、c.aによってドメインaにアクセスできます.
Maps(K-Vペア):指定されたドメインへのアクセスは[ドメイン名を指定]で行うことができます.たとえば、1つのMapMにはgroup-gidのkvペアが含まれており、gidの値はM['group']で取得できます.
Arrays:arrayのデータは同じタイプです.たとえば、array Aの要素['a','b','c']の場合、A[1]の値は'b'です.
Struct使用
テーブルの作成:
''COLLECTION ITEMS TERMINTED BY':フィールドの各itemの区切り文字
データのインポート:
Array使用
テーブルの作成:
Map使用
テーブルの作成:
データのインポート:
Structs:structs内部のデータは、DOT(.)によってアクセスできます.例えば、テーブル内のcの列のタイプはSTRUCT{a INT;b INT}であり、c.aによってドメインaにアクセスできます.
Maps(K-Vペア):指定されたドメインへのアクセスは[ドメイン名を指定]で行うことができます.たとえば、1つのMapMにはgroup-gidのkvペアが含まれており、gidの値はM['group']で取得できます.
Arrays:arrayのデータは同じタイプです.たとえば、array Aの要素['a','b','c']の場合、A[1]の値は'b'です.
Struct使用
テーブルの作成:
hive> create table student_test(id INT, info struct)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
> COLLECTION ITEMS TERMINATED BY ':';
OK
Time taken: 0.446 seconds
'FIELDS TERMINTED BY':フィールドとフィールドの間の区切り記号''COLLECTION ITEMS TERMINTED BY':フィールドの各itemの区切り文字
データのインポート:
$ cat test5.txt
1,zhou:30
2,yan:30
3,chen:20
4,li:80
hive> LOAD DATA LOCAL INPATH '/home/work/data/test5.txt' INTO TABLE student_test;
Copying data from file:/home/work/data/test5.txt
Copying file: file:/home/work/data/test5.txt
Loading data to table default.student_test
OK
Time taken: 0.35 seconds
クエリー:hive> select info.age from student_test;
Total MapReduce jobs = 1
......
Total MapReduce CPU Time Spent: 490 msec
OK
30
30
20
80
Time taken: 21.677 seconds
Array使用
テーブルの作成:
hive> create table class_test(name string, student_id_list array)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY ','
> COLLECTION ITEMS TERMINATED BY ':';
OK
Time taken: 0.099 seconds
データのインポート:$ cat test6.txt
034,1:2:3:4
035,5:6
036,7:8:9:10
hive> LOAD DATA LOCAL INPATH '/home/work/data/test6.txt' INTO TABLE class_test ;
Copying data from file:/home/work/data/test6.txt
Copying file: file:/home/work/data/test6.txt
Loading data to table default.class_test
OK
Time taken: 0.198 seconds
クエリー:hive> select student_id_list[3] from class_test;
Total MapReduce jobs = 1
......
Total MapReduce CPU Time Spent: 480 msec
OK
4
NULL
10
Time taken: 21.574 seconds
Map使用
テーブルの作成:
hive> create table employee(id string, perf map)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY '\t'
> COLLECTION ITEMS TERMINATED BY ','
> MAP KEYS TERMINATED BY ':';
OK
Time taken: 0.144 seconds
‘MAP KEYS TERMINTED BY’:key valueセパレータデータのインポート:
$ cat test7.txt
1 job:80,team:60,person:70
2 job:60,team:80
3 job:90,team:70,person:100
hive> LOAD DATA LOCAL INPATH '/home/work/data/test7.txt' INTO TABLE employee;
クエリー:hive> select perf['person'] from employee;
Total MapReduce jobs = 1
......
Total MapReduce CPU Time Spent: 460 msec
OK
70
NULL
100
Time taken: 20.902 seconds
hive> select perf['person'] from employee where perf['person'] is not null;
Total MapReduce jobs = 1
.......
Total MapReduce CPU Time Spent: 610 msec
OK
70
100
Time taken: 21.989 seconds
hive>