Impala 2、Impala Shell 和 Impala SQL
1、Impala 外部 Shell
Impala外部Shell 就是不進入Impala內部,直接執行的ImpalaShell 例如通過外部Shell檢視Impala幫助可以使用: $ impala-shell -h 這樣就可以查看了;
再例如顯示一個SQL語句的執行計劃: $ impala-shell -p select count(*) from t_stu
下面是Impala的外部Shell的一些引數:
• -h (--help) 幫助
• -v (--version) 查詢版本資訊
• -V (--verbose) 啟用詳細輸出
• --quiet 關閉詳細輸出
• -p 顯示執行計劃
• -i hostname (--impalad=hostname) 指定連線主機格式hostname:port 預設埠21000
• -r(--refresh_after_connect)重新整理所有元資料
• -q query (--query=query) 從命令列執行查詢,不進入impala-shell
• -d default_db (--database=default_db) 指定資料庫
• -B(--delimited)去格式化輸出
• --output_delimiter=character 指定分隔符
• --print_header 列印列名
• -f query_file(--query_file=query_file)執行查詢檔案,以分號分隔
• -o filename (--output_file filename) 結果輸出到指定檔案
• -c 查詢執行失敗時繼續執行
• -k (--kerberos) 使用kerberos安全加密方式執行impala-shell
• -l 啟用LDAP認證
• -u 啟用LDAP時,指定使用者名稱
2、Impala內部Shell
使用命令 $ impala-sehll 可以進入impala,在這裡可以像Hive一樣正常使用SQL,而且還有一些內部的impala命令:
• help
• connect <hostname:port> 連線主機,預設埠21000
• refresh <tablename> 增量重新整理元資料庫
• invalidate metadata 全量重新整理元資料庫
• explain <sql> 顯示查詢執行計劃、步驟資訊
• set explain_level 設定顯示級別(0,1,2,3)
• shell <shell> 不退出impala-shell執行Linux命令
• profile (查詢完成後執行) 查詢最近一次查詢的底層資訊
例:檢視幫助可以直接使用: help ,要重新整理一個表的增量元資料可以使用 refresh t_stu;
3、Impala 的監護管理
可以通過下面的連結來訪問Impala的監護管理頁面:
• 檢視StateStore
– http://node1:25020/
• 檢視Catalog
– http://node1:25010/
4、Impala 儲存&&分割槽
下面是Impala對檔案的格式及壓縮型別的支援
• 新增分割槽方式
– 1、partitioned by 建立表時,新增該欄位指定分割槽列表
– 2、使用alter table 進行分割槽的新增和刪除操作
1234 | create table t_person(id int , name string, age int ) partitioned by (type string); alter table t_person add partition (sex=‘man '); alter table t_person drop partition (sex=‘man' ); alter table t_person drop partition (sex=‘man‘,type=‘boss’); |
• 分割槽內新增資料
12 | insert into t_person partition (type= 'boss' ) values (1,’zhangsan’,18),(2,’lisi’,23) insert into t_person partition (type= 'coder' ) values (3,wangwu’,22),(4,’zhaoliu’,28),(5,’tianqi’,24) |
• 查詢指定分割槽資料
1 | select id, name from t_person where type=‘coder |
5、Impala SQL VS HiveQL
下面是Impala對基礎資料型別和擴充套件資料型別的支援
• 此外,Impala不支援HiveQL以下特性:
– 可擴充套件機制,例如:TRANSFORM、自定義檔案格式、自定義SerDes
– XML、JSON函式
– 某些聚合函式:
• covar_pop, covar_samp, corr, percentile, percentile_approx,histogram_numeric, collect_set
• Impala僅支援:AVG,COUNT,MAX,MIN,SUM
– 多Distinct查詢
– HDF、UDAF
– 以下語句:
ANALYZE TABLE (Impala:COMPUTE STATS)、DESCRIBE COLUMN、
DESCRIBE DATABASE、EXPORT TABLE、IMPORT TABLE、SHOW
TABLE EXTENDED、SHOW INDEXES、SHOW COLUMNS
6、Impala SQL
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | --建立資料庫 create database db1; use db1; -- 刪除資料庫 use default ; drop database db1; --建立表(內部表) -- 預設方式建立表: create table t_person1( id int , name string) --指定儲存方式: create table t_person2( id int , name string ) row format delimited fields terminated by ‘\0’ (impala1.3.1版本以上支援‘\0’ ) stored as textfile; --其他方式建立內部表 --使用現有表結構: create table tab_3 like tab_1; --指定文字表字段分隔符: alter table tab_3 set serdeproperties(‘serialization.format’=‘,’,’field.delim’=‘,’); --插入資料 -- 直接插入值方式: insert into t_person values (1,hex(‘hello world’)); --從其他表插入資料: insert (overwrite) into tab_3 select * form tab_2 ; --批量匯入檔案方式方式: load data
|