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

  閱讀目錄

本文版權歸mephisto和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文連接,謝謝合做。html

文章是哥(mephisto)寫的,SourceLink數據庫

 

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

   下面咱們開始繼續進一步的瞭解Impala的相關操做。性能

數據庫相關

一:建立

  在這裏,數據庫就是一個目錄結構,固然對於的元數據還會持久化到關係型數據庫。優化

create database dbtest;

二:查看

  能夠查看當前可用的數據庫。spa

show databases;

三:刪除

  刪除制定的數據庫,會刪除數據庫中的表,及數據,hdfs文件。數據庫對於的hdfs目錄結構也會被刪除。3d

drop database dbtest1;

四:切換當前數據庫

  默認的是default數據庫,切換了後,能夠直接使用當前數據庫中的表。code

use dbtest;

 

表相關

一:建立

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

二:建立分區表

  分區表能夠根據存放數據,這樣在分析的時候,能夠只使用對應分區的數據,能夠大大的下降檢索的數據量,提升分析性能。orm

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

  這裏定義了year,month,day 這3層分區。htm

三:查看代表細

  顯示錶的元數據,包括列名,類型等等。

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

相關文章
相關標籤/搜索