大數據-impala(三)

                                 大數據-impala(三)

impala-shell語法

impala-shell的外部命令參數語法

不需要進入到impala-shell交互命令行當中即可執行的命令參數

impala-shell後面執行的時候可以帶很多參數:

-h 查看幫助文檔

impala-shell -h

-r 刷新整個元數據,數據量大的時候,比較消耗服務器性能

impala-shell -r

-v 查看對應版本

impala-shell -v -V

-f 執行查詢文件

cd /kkb/install

vim impala-shell.sql

select * from course.score;


通過-f 參數來執行執行的查詢文件

impala-shell -f impala-shell.sql

-p 顯示查詢計劃

impala-shell的內部命令行參數語法

進入impala-shell命令行之後可以執行的語法

help命令

幫助文檔

connect命令

connect hostname 連接到某一臺機器上面去執行

refresh 命令

refresh dbname.tablename 增量刷新,刷新某一張表的元數據,主要用於刷新hive當中數據表裏面的數據改變的情況。

refresh course.score;

invalidate metadata 命令

全量刷新,性能消耗較大,主要用於hive當中新建數據庫或者數據庫表的時候來進行刷新

invalidate  metadata

explain 命令

用於查看sql語句的執行計劃

explain select * from course.score;

#explain的值可以設置成0,1,2,3等幾個值,其中3級別是最高的,可以打印出最全的信息

set explain_level=3;

profile命令

執行sql語句之後執行,可以打印出更加詳細的執行步驟,

主要用於查詢結果的查看,集羣的調優等

select * from course.score;

profile;

注意:在hive窗口當中插入的數據或者新建的數據庫或者數據庫表,在impala當中是不可直接查詢到的,需要刷新數據庫,在impala-shell當中插入的數據,在impala當中是可以直接查詢到的,不需要刷新數據庫,其中使用的就是catalog這個服務的功能實現的,catalog是impala1.2版本之後增加的模塊功能,主要作用就是同步impala之間的元數據。

創建數據庫

impala-shell進入到impala的交互窗口

查看所有數據庫

show databases;

創建與刪除數據庫

CREATE DATABASE IF NOT EXISTS mydb1;
drop database  if exists  mydb;

創建數據庫表並指定數據庫表數據存放hdfs的位置(與hive建表語法類似)

hdfs dfs -mkdir -p /input/impala

create  external table  t3(id int ,name string ,age int )  row  format  delimited fields terminated  by  '\t' location  '/input/impala/external';

創建數據庫表

#創建student表

CREATE TABLE IF NOT EXISTS mydb1.student (name STRING, age INT, contact INT );

#創建employ表

create table employee (Id INT, name STRING, age INT,address STRING, salary BIGINT);

數據庫表中插入數據

insert into employee (ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Ramesh', 32, 'Ahmedabad', 20000 );
insert into employee values (2, 'Khilan', 25, 'Delhi', 15000 );
Insert into employee values (3, 'kaushik', 23, 'Kota', 30000 );
Insert into employee values (4, 'Chaitali', 25, 'Mumbai', 35000 );
Insert into employee values (5, 'Hardik', 27, 'Bhopal', 40000 );
Insert into employee values (6, 'Komal', 22, 'MP', 32000 );

數據的覆蓋

Insert overwrite employee values (1, 'Ram', 26, 'Vishakhapatnam', 37000 );
執行覆蓋之後,表中只剩下了這一條數據了

另外一種建表語句

create table customer as select * from employee;

數據查詢

select * from employee;

select name,age from employee;

刪除表

DROP table  mydb1.employee;

清空表數據

truncate  employee;

查看視圖數據

select * from employee_view;

order by語句

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]
Select * from employee ORDER BY id asc;

group by 語句

Select name, sum(salary) from employee Group BY name;

having 語句

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]

按年齡對錶進行分組,並選擇每個組的最大工資,並顯示大於20000的工資

select max(salary) from employee group by age having max(salary) > 20000;

limit語句

select * from employee order by id limit 4;

impala當中的數據表導入幾種方式

第一種 通過load hdfs的數據到impala當中去

create table user(id int ,name string,age int ) row format delimited fields terminated by "\t";

準備數據user.txt並上傳到hdfs的 /user/impala路徑下去

1	hello	15
2	zhangsan	20
3	lisi	30
4	wangwu	50

加載數據

load data inpath '/user/impala/' into table user;

查詢加載的數據

select  *  from  user;

#如果查詢不不到數據,那麼需要刷新一遍數據表

refresh  user;

第二種

create  table  user2   as   select * from  user;

第三種

insert into 不推薦使用 因爲會產生大量的小文件

千萬不要把impala當做一個數據庫來使用

第四種

insert  into  select  用的比較多
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章