天天看點

java impala shell 指令_Impala 基本文法(shell指令)

1. Impala Shell安裝

目前Impala Shell Beta

Release采用的是rpm包進行安裝,指令如下:

rpm -ivh

impala-shell-0.3-1.p0.366.el6.x86_64.rpm

2. Impala Shell使用

Impala使用Hive SQL進行資料查詢,是以Impala

Shell在使用方面也效仿了Hive,在許多指令的用法上和Hive有相近之處,但使用細節又有所差別。

Impala Shell和Hive的相同之處:

 使用Hive SQL進行資料查詢;

 在許多指令使用上是一樣的。

Impala Shell和Hive的不同之處:

 Hive對語句解析的結束标志是”;”,而Impala

Shell對語句解析的結束标志是回車;

 Hive對指令的錯誤資訊相對Impala

Shell比較詳細;

 Impala使用的SQL隻是Hive SQL的子集。

2.1啟動Impala Shell

啟動Impala Shell指令如下:

>impala -shell

使用connect指令連接配接Impala執行個體,預設端口為21000,指令如下:

>connect

impalad-host:21000

首次使用Impala-Shell需要重新整理中繼資料,指令如下:

>refresh

官方文檔給出需要執行重新整理中繼資料的情況:

 中繼資料發生改變時;

其他實體(比如Hive、其他Impala執行個體)改變中繼資料或者資料;

 用戶端(Impala Shell和ODBC連接配接)修改資料時。

官方文檔給出不需要執行重新整理中繼資料的情況:

 中繼資料被一個單一Impala實體改變時;

 中繼資料的改變來自背景資料庫時。

中繼資料的改變有下面兩種情況:

Hive——Alert、Create、Drop和Insert操作

 Impala——Insert操作

2.2 Impala Shell指令詳解

在Impala

Shell中,連續兩次點選“Tab”,就會出現可以使用的指令資訊:

connect describe explain help insert quit

refresh select set shell show use version

2.2.1 Connect指令

Connect指令主要用于建立一個Impalad用戶端連接配接,預設連接配接端口為21000,使用方式如下:

>connect

impalad-host:impalad-post

如果成功連接配接上Impalad主機,Shell指令提示前會顯示impalad-host:impalad-post。

2.2.2 Describe指令

Describe指令主要用于檢視資料表的定義,使用方式如下:

> describe table_name

指令執行成功後,顯示資料庫中的表定義如下次:

column_name1 define_type

column_name2 define_type

….

如果檢視的資料表不存在時,傳回如下錯誤資訊:

ERROR: com.cloudera.impala.common.AnalysisException: Unknown table:

database_name.given_table_name

…..

2.2.3 Explain指令

Explain指令主要用于執行語句的執行計劃,使用方式如下:

>explain excute_clause

指令執行成功會顯示執行語句的執行計劃。

2.2.4 Help指令

Help指令主要用于檢視各指令幫助資訊,使用方式如下:

>help command

指令執行成功會顯示指令的幫助資訊。

注意:Impala

Shell中是不區分大小寫的,但help指令後面的指令參數必須小寫,否則系統無法識别。

2.2.5 Insert指令

Insert指令主要用于利用select

clause結果或者partition中的資料插入整合後的新資料,使用方式如下:

>insert into table table_name

select_clause

> insert overwrite table table_name

select_clause

> insert overwrite table table_name

partition

指令執行成功不會顯示額外資訊。

2.2.6 Quit指令

Quit指令主要用于退出Shell,使用方式如下:

>quit

指令執行成功退出Shell,不會顯示額外資訊。

2.2.7 Refresh指令

Refresh指令主要用于重新整理中繼資料資訊,使用方式如下:

>refresh

指令執行成功會顯示中繼資料重新整理成功資訊。

2.2.8 Select指令

Select指令主要用于查詢資料資訊,使用方式如下:

>select clause

指令執行成功會顯示查詢資訊的結果。

官方文檔描述Select支援的操作:

支援SQL類型:boolean, tinyint, smallint, int, bigint, float, double,

timestamp, string;

支援ALL, DISTINCT關鍵字查詢;

支援子查詢(在From子句中);

支援WHERE, GROUP BY, HAVING子句;

支援ORDER BY (查詢語句必須含有limit關鍵字);

支援Joins 查詢(LEFT, RIGHT, FULL, OUTER, INNER), 多表查詢,

子查詢;

支援UNION ALL、LIMIT關鍵字查詢;

支援外部表查詢;

支援執行計劃;

支援關系比較符,比如=,>,=,>=;

支援算術符号,比如+,-;

支援邏輯符号,比如AND,OR,NOT,注意:impala不支援&&,||,!;

支援Hive内建的函數。

2.2.9 Set指令

Set指令主要用于設定屬性常量值,使用方式如下:

>set

attribute_name=attribute_value

指令執行成功不顯示任何資訊。可以進行設定的屬性資訊如下表所示:

屬性名 允許的屬性值 作用

DISABLE_CODEGEN true或1,其他值都為false

禁止編譯

MAX_ERRORS 整數 最大的錯誤數

ABORT_ON_ERROR true或1,其他值都為false

當錯誤發生時,是否中斷

MAX_SCAN_RANGE_LENGTH 整數

最大的Scan範圍長度

PARTITION_AGG true或1,其他值都為false

允許分區聚合

MAX_IO_BUFFERS 整數 最大IO緩沖區大小

ALLOW_UNSUPPORTED_FORMATS true或1,其他值都為false

是否允許不支援格式

NUM_SCANNER_THREADS 整數

Scanner執行的線程數

BATCH_SIZE 整數 批次大小

NUM_NODES 整數 節點數目

2.2.10 Shell指令

Shell指令主要用于執行Shell指令,使用方式如下:

>shell shell_commands

指令執行成功會顯示shell指令執行結果資訊,也可以使用”!”代替shell。使用方式如下:

>! shell_commands

注意:shell指令不能是alias指令,否則會報錯。

2.2.11 Show指令

Show指令主要用于顯示所有的資料庫空間名和制定資料庫空間下的所有表名,使用方式如下:

>show databases

>show tables

>show schemas

show databases指令執行成功會顯示所有的資料庫空間名。show

tables指令執行成功會顯示目前表空間下的所有表名。show

schemas指令執行成功會顯示所有的資料庫空間名。

2.2.12 Use指令

Use指令主要用于切換資料庫空間,使用方式如下:

>use database_name

指令執行成功不顯示任何資訊。

注意:如果資料庫空間輸入錯誤,impala-shell不會給出任何提示資訊。這一點不如Hive人性,Hive會給出錯誤資訊。

2.2.13 Version指令

Version指令主要用于檢視Impala版本資訊,使用方式如下:

>version

指令執行成功會顯示Impala版本資訊。