概述
MAP:MAP包含key->value鍵值對,可以通過key來訪問元素。比如”userlist”是一個map類型,其中username是key,password是value;那么我們可以通過userlist['username']來得到這個用戶對應的password;
操作實例
1、創建表
與struct的區別:
2、準備文件
---------字段名一致-------
[root@hello110 data]# vi ?map_test
1001 ? ?job:80,team:123,person:700
1002 ? ?job:90,team:234,person:800
1003 ? ?job:70,team:345,person:900
1004 ? ?job:60,team:456,person:1000
1005 ? ?job:59,team:678,person:844
1006 ? ?job:98,team:832,person:866
---------字段名不一致------
[root@hello110 data]# vi ?map_test2
1001 ? ?job_1:80,team:123,person:700
1002 ? ?job_2:90,team:234,person:800
1003 ? ?job:70,team:345,person:900
1004 ? ?job:60,team:456,person:1000
1005 ? ?job:59,team:678,person:844
1006 ? ?job:98,team:832,person:866
3、文件導入表
4、查看表
------map_test表-----
----------map_test2-------
hive (default)> select * from map_test2;
OK
map_test2.id ? ?map_test2.perf
1001 ? ?job_1:80,team:123,person:700 ? ?NULL
1002 ? ?job_2:90,team:234,person:800 ? ?NULL
1003 ? ?job:70,team:345,person:900 ? ? ?NULL
1004 ? ?job:60,team:456,person:1000 ? ? NULL
1005 ? ?job:59,team:678,person:844 ? ? ?NULL
1006 ? ?job:98,team:832,person:866 ? ? ?NULL
Time taken: 0.086 seconds, Fetched: 6 row(s)
----------------
hive (default)> select perf['job_1'] from map_test2;
OK
c0
NULL
NULL
NULL
NULL
NULL
NULL
Time taken: 0.284 seconds, Fetched: 6 row(s)
-----------------------
hive (default)> select perf['job'] from map_test2;
OK
c0
NULL
NULL
NULL
NULL
NULL
NULL
Time taken: 0.084 seconds, Fetched: 6 row(s)
-------------------------------
hive (default)> select perf['job_2'] from map_test2;
OK
c0
NULL
NULL
NULL
NULL
NULL
NULL
Time taken: 0.074 seconds, Fetched: 6 row(s)
------------------------------
hive (default)> select perf from map_test2;
OK
perf
NULL
NULL
NULL
NULL
NULL
NULL
Time taken: 0.076 seconds, Fetched: 6 row(s)
-----------------原來:如果map字段名不一致,會被當成id字段來處理了---------
hive (default)> select id from map_test2;
OK
id
1001 ? ?job_1:80,team:123,person:700
1002 ? ?job_2:90,team:234,person:800
1003 ? ?job:70,team:345,person:900
1004 ? ?job:60,team:456,person:1000
1005 ? ?job:59,team:678,person:844
1006 ? ?job:98,team:832,person:866
Time taken: 0.064 seconds, Fetched: 6 row(s)
5、hadoop中的文件內容