從零自學Hadoop(24):Impala相關操作上

sinodzh發表於2017-07-31

  閱讀目錄

本文版權歸mephisto和部落格園共有,歡迎轉載,但須保留此段宣告,並給出原文連結,謝謝合作。

文章是哥(mephisto)寫的,SourceLink

 

     上一篇,我們介紹Impala的介紹及安裝。

   下面我們開始繼續進一步的瞭解Impala的相關操作。

資料庫相關

一:建立

  在這裡,資料庫就是一個目錄結構,當然對於的後設資料還會持久化到關係型資料庫。

create database dbtest;

二:檢視

  可以檢視當前可用的資料庫。

show databases;

三:刪除

  刪除制定的資料庫,會刪除資料庫中的表,及資料,hdfs檔案。資料庫對於的hdfs目錄結構也會被刪除。

drop database dbtest1;

四:切換當前資料庫

  預設的是default資料庫,切換了後,可以直接使用當前資料庫中的表。

use dbtest;

 

表相關

一:建立

create table student
(
id string  ,
name string  ,
sex  string     ,
birthday  timestamp 
);

二:建立分割槽表

  分割槽表可以根據存放資料,這樣在分析的時候,可以只使用對應分割槽的資料,可以大大的降低檢索的資料量,提高分析效能。

create table student_p
(
id string  ,
name string  ,
sex  string     ,
birthday  timestamp 
)
partitioned by (year string,month string,day string);

  這裡定義了year,month,day 這3層分割槽。

三:檢視錶明細

  顯示錶的後設資料,包括列名,型別等等。

desc student;

 

 

 

  formatted引數可以顯示更多資訊,顯示格式與hive類似。包括底層詳細資訊,建立時間,格式,hdfs檔案位置等等。

desc formatted student_p;

四:檢視當前資料庫已有的表

show tables;

五:HDFS目錄

  可以看到在dbtest.db的目錄下有兩個我們建好表的目錄。

 六:修改表

  ALTER TABLE 語句用來修改現有表的結構或屬性。在 Impala 裡,這是一個邏輯操作,更新了 Impala 和 Hive 共用的 metastore 資料庫中表的後設資料; ALTER TABLE 語句不會對實際的資料檔案進行重寫、移動等操作。因此,你可能需要相應的物理檔案系統操作才能實現移動資料檔案到不同的 HDFS 目錄,重寫資料檔案來包含其他欄位,或轉換成不同的檔案格式。

七:重新命名錶

alter table student rename to student1;

  對於內部表,這一操作實際地修改了包含資料檔案的 HDFS 目錄名;原始目錄將不再存在。

八:增加列  

alter table student1 add columns (addr string);

九:替換列  

alter table student1 replace columns(id int,name string, sex string,tel int);

  當替換列時,原有列的定義都被廢棄。你可能會在收到一組新的有不同資料型別或不同順序的列的資料檔案時使用這一技術(資料檔案會被保留,因此當新列與舊列不相容時,需要在執行進一步的查詢前,使用 INSERT OVERWRITE 或 LOAD DATA OVERWRITE 語句替換所有的資料)。

可以看到。我們將原有列的結構,型別做了很大的替換。

十:修改列

   修改列可以改變列的名字和型別

alter table student1 change id idstr string;

十一:刪除列

alter table student1 drop tel;

十二:修改檔案格式

alter table student1 set fileformat parquet;

  因為本操作只是修改表的後設資料,對現存的資料,你必須使用 Impala 之外的 Hadoop 技術對已有的資料進行轉換。之後再在 Impala 中使用 INSERT 語句建立的資料將使用新的格式。你不能指定文字檔案的分隔符;文字檔案的分隔符必須是逗號。

十三:增加分割槽

alter table student_p add partition(year='2017',month='07',day='24');

  可以看到hdfs中student_p的下面有個3層目錄結構。

重複上面增加分割槽的操作,分別新增22,23日的分割槽。

 

十四:刪除分割槽

  刪除day=22的分割槽。

alter table student_p drop partition(year='2017',month='07',day='22');

 可以看到該表只有23,24兩個分割槽。hdfs對應的目錄會被刪除。所以該分割槽的實際檔案也會被刪除。

十五:檢視錶的統計狀態

show table stats student_p;

  上述語句中使用到這個,可以看到每個分割槽的狀態,如果有資料,還會統計行數,檔案數,大小等等。

十六:檢視錶的列統計

show column stats student_p;

  

十七:採集表的統計

compute stats student_p;

  採集相關表和相關列的統計情況。COMPUTE STATS 語句是從底層向上構建,以提高可用性和使用者友好度。你可以執行一個單獨的 Impala COMPUTE STATS 語句來採集包括 table 和 column 的統計資訊,而不是為表和列的統計資訊分別執行 Hive ANALYZE TABLE 語句。

  COMPUTE STATS 也可以採集 HBase 表的資訊。採集的 HBase 表的統計資訊與 HDFS-backed 表的有所不同,但當 HBase 表執行連線查詢時,統計資訊仍被用於優化。
  COMPUTE STATS執行完後,這些統計資訊被存放在 metastore 資料庫中,可以為impala用來優化查詢。

 

 

  

--------------------------------------------------------------------

  到此,本章節的內容講述完畢。

系列索引

  【源】從零自學Hadoop系列索引

 

 

 

 

本文版權歸mephisto和部落格園共有,歡迎轉載,但須保留此段宣告,並給出原文連結,謝謝合作。

文章是哥(mephisto)寫的,SourceLink

 

相關文章