第二章インパラの基本的な使い方
1、インパラ使用
1.1、インパラ・シェル構文
1.1.1外部インパラシェルコマンドパラメータの構文
不需要进入到impala-shell交互命令行当中即可执行的命令参数
パラメータの数を取ることができ、後で実行インパラシェル:
-hヘルプドキュメント
impala-shell -h
全体のメタデータ、大量のデータ、サーバーのパフォーマンスをより多くの消費をリフレッシュするために-r
impala-shell -r
データの-Bフォーマッタクエリ大量のパフォーマンス向上させることができ
--print_headerフォーマッタ名表示欄
区切り文字指定--output_delimiter
-vビューに対応するバージョンを
impala-shell -v -V
-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
-i impaladに接続
タスクを実行するために指定されたimpaladを--impalad
-o行く結果をファイルに保存します
出力ファイル名を指定し--output_file
impala-shell -f impala-shell.sql -o hello.txt
-pは、クエリプランを表示します
impala-shell -f impala-shell.sql -p
-qは、インパラ・シェルクエリを使用しないでください。
1.1.2、インパラ・シェルの内部コマンドラインパラメータの構文
構文インパラ・シェルのコマンドラインを入力した後に実行することができます
インパラ・シェルを入力します。
impala-shell #任意目录
helpコマンド
ヘルプドキュメント
コマンドを接続
上記を実行するためにマシンに接続するホスト名を接続します
リフレッシュコマンド
refresh dbname.tablename 增量刷新
メタデータは、主のハイブ内のデータテーブル間のデータ変更をリフレッシュするために、テーブルを更新する場合
データは内部データテーブルの間で変更するハイブをリフレッシュするための
refresh mydb.stu;
メタデータを無効化する命令:
invalidate metadata全量刷新
新しいハイブデータベースまたはデータベーステーブルをリフレッシュするときに主に使用され、大規模なパフォーマンス・オーバーヘッド、
invalidate metadata
説明コマンド:
SQL文の実行計画を表示するための
explain select * from stu;
説明値は、いくつかの値に設定することができる0,1,2,3レベル3が最高であり、最も完全な情報をプリントアウトすることができ、などを
set explain_level=3;
profileコマンド:
SQL文の実行を実行した後、あなたは、より詳細な実装手順を印刷することができ、
主に、優れたトーン・クラスターを結果ビューを照会するために使用
select * from stu;
profile;
注:ハイブウィンドウデータまたは新規のデータベースまたはデータベースのテーブルに挿入し、直接インパラクエリにすることができたデータに挿入直接問い合わせ、データベースを更新する必要がある、インパラ・シェルにインパラにされていませんこの機能・サービスの実装を使用するためのカタログでデータベースをリフレッシュする必要、カタログがモジュール機能の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 #用的比较多