Hive基礎07、Hive引入Map
1、建表語句
建立一個成績表,記錄學生的各個科目成績:
英文關鍵字解析:
1、CREATE TABLE 建立一個指定名字的表,如果庫中已有相同名的表,則抛出異常;
使用者可以使用 IF NOT EXISTS 選項來忽略此異常。
2、EXTERNAL 關鍵字可以讓使用者建立一個外部表(預設建立内部表)。外部表在建表的同時必須指定一個指向實際資料的路徑(LOCATION),Hive在建立内部表時,會将資料移動到資料倉庫指向的路徑;若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。在删除表的時候,内部表的中繼資料和資料會被一起删除,而外部表隻删除中繼資料,不删除資料。
3、COMMENT 是給表字段或者表内容添加注釋說明的。
4、PARTITIONED BY 給表做分區,決定了表是否為分區表。
5、CLUSTERED BY 對于每一個表(table)或者分區, Hive 可以進一步組織成桶,也就是說桶是更為細粒度的資料範圍劃分,Hive采用對列值哈希,然後除以桶的個數求餘的方式決定該條記錄存放在哪個桶當中。
6、ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’, 這裡指定表存儲中列的分隔符,預設是 \001,這裡指定的是逗号分隔符,還可以指定其他列的分隔符。
7、STORED AS SEQUENCEFILE|TEXTFILE|RCFILE,如果檔案資料是純文字,可以使用 STORED AS TEXTFILE,如果資料需要壓縮,使用 STORED AS SEQUENCEFILE。
8、LOCATION 定義 hive 表的資料在 hdfs 上的存儲路徑,一般管理表(内部表不不要自定義),但是如果定義的是外部表,則需要直接指定一個路徑。
create table tb_map(id int,name string,score map<string,float>)
row format delimited
fields terminated by '\t'
collection items terminated by ','
map keys terminated by '='
lines terminated by '\n'
stored as textfile;
檢視結構:
desc tb_map;
2、建立資料檔案【mapInfo.txt】
1 王姑娘 javaBase=92,H5=95,Spring=98
2 巧榮姑娘 javaBase=90,H5=98,Spring=95
3 楊先生 javaBase=100,H5=100,Spring=100
上傳至服務:
3、導入資料
load data local inpath '/opt/temp/mapInfo.txt' into table tb_map;