1. 程式人生 > >hdfs目錄建立hive表

hdfs目錄建立hive表

簡介

針對已經存放在hdfs上的檔案,建立hive表。這裡推薦建立外表,因為hive外表被刪除,對應目錄的資料不會被清除。

步驟

step1. 根據hdfs的資料欄位,建立hive表。

CREATE EXTERNAL TABLE if not exists push_log(
     ip STRING COMMENT 'IP Address of the User', 
     imei STRING,
     gameid STRING, 
     channelid STRING,
     lan STRING 'language',
country STRING COMMENT 'country of origination', mac STRING, ver STRING, phonetype STRING, sver STRING, tver STRING, plmn STRING) COMMENT 'This is the staging push log table' PARTITIONED BY (hostid STRING, dayid STRING) **# 指定分割槽** ROW FORMAT DELIMITED FIELDS TERMINATED BY
'\001' STORED AS TEXTFILE LOCATION '/user/data/push';
若該表有分割槽,則在建立時指定分割槽,這點很重要。
雖然建立了分割槽,分割槽裡面也有資料,但是這時候hive表依然不能識別分割槽資料。還需要新增分割槽操作
step2. 新增分割槽(更貼切說,應該是指定分割槽)

alter table push_log add partition(hostid='$hostid', dayid='$dayid') location '/user/data/push/$hostid/$dayid';

完成上面操作後,這時候從hive中就能讀取到新增的分割槽資料,當然如果是lzo檔案的話,還需要修改FileFormat,詳見

上篇文章

總結

若有任何問題和建議,可以留言討論。
在操作過程中,發現了一些提高工作效率的方法。比如批量生成lzo的索引方式(詳見上篇文章)。