章インパラの基本

第二章インパラの基本的な使い方

1、インパラ使用

1.1、インパラ・シェル構文

1.1.1外部インパラシェルコマンドパラメータの構文

不需要进入到impala-shell交互命令行当中即可执行的命令参数

パラメータの数を取ることができ、後で実行インパラシェル:

-hヘルプドキュメント

impala-shell -h

1563107967759

全体のメタデータ、大量のデータ、サーバーのパフォーマンスをより多くの消費をリフレッシュするために-r

impala-shell -r

1563108023302

データの-Bフォーマッタクエリ大量のパフォーマンス向上させることができ
--print_headerフォーマッタ名表示欄
区切り文字指定--output_delimiter
-vビューに対応するバージョンを

impala-shell -v -V

1563108079152

-fクエリファイルを実行
クエリファイルを指定し--query_file

cd /export/servers
vim impala-shell.sql
use weblog;
select * from ods_click_pageviews limit 10;

#通过-f 参数来执行执行的查询文件
impala-shell -f impala-shell.sql

1563108116213

-i impaladに接続

タスクを実行するために指定されたimpaladを--impalad

-o行く結果をファイルに保存します

出力ファイル名を指定し--output_file

impala-shell -f impala-shell.sql -o hello.txt

1563108170822

-pは、クエリプランを表示します

impala-shell -f impala-shell.sql -p

1563108200641

-qは、インパラ・シェルクエリを使用しないでください。

1563108215490

1.1.2、インパラ・シェルの内部コマンドラインパラメータの構文

構文インパラ・シェルのコマンドラインを入力した後に実行することができます

インパラ・シェルを入力します。

impala-shell  #任意目录

helpコマンド

ヘルプドキュメント

1563108279416

コマンドを接続

上記を実行するためにマシンに接続するホスト名を接続します

1563108302182

リフレッシュコマンド

refresh dbname.tablename 增量刷新メタデータは、主のハイブ内のデータテーブル間のデータ変更をリフレッシュするために、テーブルを更新する場合

データは内部データテーブルの間で変更するハイブをリフレッシュするための

refresh mydb.stu;

1563108369961

メタデータを無効化する命令:

invalidate metadata全量刷新新しいハイブデータベースまたはデータベーステーブルをリフレッシュするときに主に使用され、大規模なパフォーマンス・オーバーヘッド、

invalidate metadata

1563108429754

説明コマンド:

SQL文の実行計画を表示するための

explain select * from stu;

1563108474061

説明値は、いくつかの値に設定することができる0,1,2,3レベル3が最高であり、最も完全な情報をプリントアウトすることができ、などを

set explain_level=3;

1563108488296

profileコマンド:

SQL文の実行を実行した後、あなたは、より詳細な実装手順を印刷することができ、

主に、優れたトーン・クラスターを結果ビューを照会するために使用

select * from stu;
profile;

1563108549570

1563108553592

注:ハイブウィンドウデータまたは新規のデータベースまたはデータベースのテーブルに挿入し、直接インパラクエリにすることができたデータに挿入直接問い合わせ、データベースを更新する必要がある、インパラ・シェルにインパラにされていませんこの機能・サービスの実装を使用するためのカタログでデータベースをリフレッシュする必要、カタログがモジュール機能のimpala1.2バージョンの後に追加されていない、主な役割は、インパラの間でメタデータを同期させることです

1.2、データベースを作成します

インパラに1.1.1対話型のウィンドウ

impala-shell #进入到impala的交互窗口

すべてのデータベース1.1.2を見ます

show databases;

1.1.3データベースの作成と削除

データベースを作成します。

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

1.3、データベーステーブルを作成します

学生のテーブルを作成します

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

作成採用テーブル

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

1.3.1、データベースのデータを挿入

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 );

カバーを実行した後、このテーブルはデータa

table文の別の建設

create table customer as select * from employee;

1.3.2データクエリー

select * from employee;
select name,age from employee; 

1.3.3、表を削除します

DROP table  mydb1.employee;

1.3.4、空のテーブルデータ

truncate  employee;

1.3.5は、ビューを作成します

CREATE VIEW IF NOT EXISTS employee_view AS select name, age from employee;

1.3.6、ビューデータを参照してください

select * from employee_view;

1.4、ORDER BY文

基本的な文法

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

1.5、GROUP BYステートメント

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

1.6、 HAVING 声明

基本的な文法

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

テーブルは、年齢別にグループ化され、20,000より大きい最大各グループの給与、および賃金の表示を選択します

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

1.7、 ステートメントを限定

select * from employee order by id limit 4;

図2に示すように、いくつかの方法でデータにインパラテーブル

第一の方法、インパラに行ってデータロードHDFS

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

データを準備し、HDFSの経路ダウン/ユーザ/インパラにアップロードUSER.TXT

アップHadoopのためにUSER.TXTアップロードします。

hdfs dfs -put user.txt /user/impala/

アップロードが成功したかどうかを参照してください。

hdfs dfs -ls /user/impala
1       kasha   15
2       fizz        20
3       pheonux    30
4       manzi  50

データのロード

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

クエリデータがロードされました

select  *  from  user;

クエリがデータよりも小さくない場合は、再度、データテーブルを更新する必要があります

refresh  user;

第二の方法:

create  table  user2   as   select * from  user;

第三の方法:

insert  into  #不推荐使用 因为会产生大量的小文件

使用するデータベースとして、インパラを置かないでください

4番目の方法:

insert  into  select  #用的比较多

おすすめ

転載: www.cnblogs.com/-xiaoyu-/p/11186672.html