天天看點

基于Hadoop的資料倉庫Hive的基本應用(一)||兩種資料導入方法在昨天的基礎上,做的Hive的應用方法

在昨天的基礎上,做的Hive的應用方法

接着已經搭建配置好後,直接在根目錄下進行hive(按課件說明,也要先進行啟動HDFS和YARN)

建立create//删除drop//檢視show//使用use——資料庫、表

導入檔案/資料:

①把本地的.txt檔案裡的資料放到hive後:

或先傳到本地,再傳到HDFS上(可以在第二個上上傳到hadoop)

hadoop指令

[[email protected] ~]$ hadoop fs -put 519.txt  /user/hive/warehouse/xp.db/xpp

519.txt是在本地的檔案   後面是xp資料庫下的xpp的表下

②用load的指令:(沒太大差別)

load

先在active建立表——在standby裡rz檔案/資料--在pwd查找路徑——

load data local inpath ‘路徑/檔案名.txt’

into table 表名;

不加local就是HDFS了;

可以反複的插入資料;

overwrite 覆寫(同名的檔案)

直接into :是追加

當然,再次之前,要先在active上把表建好,這裡最好不要用簡單的建立表的語句,根據不同的條件和需求,一次性完成:

文法  (下拉看說明
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
   [(col_name data_type , …  …)]  
   [PARTITIONED BY (col_name data_type  ...)] 
   [SORTED BY (col_name [ASC|DESC], ...)] 
   [ROW FORMAT row_format] 
   [STORED AS file_format] 
   [LOCATION hdfs_path]
說明
external可以讓使用者建立一個外部表,在建表的同時指定一個指向HDFS上的實際資料的路徑LOCATION,而不加EXTERNAL關鍵字是建立内部表,會将資料移動到資料倉庫指向HDFS預設路徑/user/hive/warehouse/;若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。在删除表的時候,内部表的中繼資料和真實資料(表内容)會被一起删除,而外部表隻删除中繼資料,不删除真實資料(表内容);if not exists如果相同名字的表已經存在,則抛出異常;使用者可以用 IF NOT EXISTS 選項來忽略這個異常;
sorted by按字段排序(asc,desc);
stored as存儲檔案類型如果檔案資料是純文字,可以使用 STORED AS TEXTFILE。如果資料需要壓縮,使用 STORED AS SEQUENCE;
row format 指定資料切分格式, DELIMITED [FIELDS TERMINATED BY char] [COLLECTION(集合類型--Map或者數組之類的結構,例如這麼存儲,1,位址資訊:中央大街) ITEMS TERMINATED BY char] [MAP KEYS TERMINATED BY char] [LINES(行 預設按照回車符) TERMINATED BY char]
partitioned by建立表時指定的partition的分區空間
           

内部表:存放在指定/預設的路徑下

外部表:放在指定的路徑下

基本的情況就是:

hive> create table if not exists xpp(id int,name string)

> row format delimited fields terminated by ',';  以,為分割

順序:建資料庫——建表(完整的)——把本地檔案傳到表裡——查詢表

hive> select * from xpp;

以及一些基本的條件查詢(where)等;

值得注意的是:

在select  count(*) from xpp;

這樣就開始了進行MapReduce(查詢)的程序:

·和一般的情況來說,會很慢,更合适用于大資料集的離線計算

有差錯的話,就可能之前的錯誤操作亂了,重新進hive,重新進一遍你自己的資料庫和你自己的表,再進行後面操作。

 分區:

建立表的時候,第二行:partitioned by (新的一列名 類型)

基于Hadoop的資料倉庫Hive的基本應用(一)||兩種資料導入方法在昨天的基礎上,做的Hive的應用方法

插入資料的時候,分區直接在括号裡寫上:

基于Hadoop的資料倉庫Hive的基本應用(一)||兩種資料導入方法在昨天的基礎上,做的Hive的應用方法

建立分區的那一行要在row分割那一行的上面

建立的資料庫、表、表資訊等等可以在:

1.web端看

基于Hadoop的資料倉庫Hive的基本應用(一)||兩種資料導入方法在昨天的基礎上,做的Hive的應用方法

2.在mysql用戶端看

基于Hadoop的資料倉庫Hive的基本應用(一)||兩種資料導入方法在昨天的基礎上,做的Hive的應用方法