pig常用コマンド

6475 ワード

一、pig:
pigはHadoopに基づいて並列にデータストリーム処理を実行するエンジンを提供する。それはスクリプト言語を含み、Pig Latinと呼ばれる。(SQL同様)
二、Pig Latin:
1、コメント:
行:
複数行:/**//。
2、入出力:
ロード:ロードファイル。
using Pig Strage(',')
as(exchange、smbol、date、dividends);
//内蔵関数Pig Strage関数を使用して、セパレータを'と指定します。もう一つのロード関数はText Loaderです。
//asでデータをロードするモデルを指定します。
記憶:store変数into'出力ファイル'
出力:dump変数//印刷
3、関係操作:
foreach:表現のセットを受け入れて、レコードごとに適用します。たとえば、すべてのレコードを読み込み終わったら、アメリカとidの二つのフィールドだけを残します。
A=ロード'input'as(user:chararray,id:long,address:chararray)
B=foreach A generate user、id;
foreach文のUDF(カスタム関数)
Filter:
グループ××  by×× :
Order by:
Discinct:
ジョイン:
Limit:
 
4、カスタム関数UDF:
登録UDF:REGISTER'….jar';
defineコマンドとUDF:defineコマンドは、ユーザのJava UDFのための別名を定義するために使用できます。このように、ユーザーは、長いパケット名のフルパスを書く必要がなく、ユーザーのUDFの構造関数にパラメータを提供することもできます。
セット:pigスクリプトの前にセット**を追加します。このコマンドは、Pigスクリプトの先頭にjobのパラメータを設定できます。
 
三、例:
1、空の値を3つの演算子で置換します。
B = FOREACH A GENERATE ((col1 is null) ? -1 :col1)
2、外部接続JOIN:
左のデータ全量表示
A = LOAD '1.txt' AS (col1:int , col2:chararray);
B = LOAD '2.txt' AS ( col1:int , col2:chararray);
C = JOIN A BY col1 LEFT , B BY col1;
DESCRIBE C;
DUMP C;
 
 3、統合ファイルAとBのデータ:
A = LOAD 'A.txt';
B = LOAD 'B.txt';
C = UNION A,B;
DUMP C;
 
4、ファイルを表す最初のフィールド(最初の列)$0
5、pig統計ファイルの語数:TOKENIZE
--        

cd hdfs:///

A = LOAD '/logdata/2012*/*/nohup_*' AS (name:chararray) ;

B = GROUP A BY name;

C = FOREACH B GENERATE group, COUNT(A);

D = ORDER C BY ($1);

E = FILTER D BY $1 > 200;

dump E;

--        

A = LOAD'/logdata/20130131/*/*' AS (line: chararray) ;

B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word;

C = group B by word;

D = foreach C generate COUNT(B), group;

E = ORDER D BY ($0);

F = FILTER E BY $0> 200;

DUMP F;
TOKENIZE関数:https://www.w3cschool.cn/apache_pig/apachupig_tokenize.
例:
1.txt;
    i am hadoop  
    i am hadoop  
    i am lucene  
    i am hbase  
    i am hive  
    i am hive sql  
    i am pig 
pigコード:
--load   txt  ,            
a = load '1.txt' as (f1:chararray);  
--     ,       (        )    ,         
b = foreach a generate flatten(TOKENIZE(f1, ' '));  
--       
c = group b by $0;  
--             
d = foreach c generate group ,COUNT($1);  
--        
stroe d into '$out'  
処理の結果:
    (i,7)  
    (am,7)  
    (pig,1)  
    (sql,1)  
    (hive,2)  
    (hbase,1)  
    (hadoop,2)  
    (lucene,1)  
トッピング機能:
--          
e = order d by $1 desc;  
-- top2  
f = limit e 2;  
--        
stroe f into '$out'  
 6、pigネストサイクル
 https://blog.csdn.net/jameshadoop/article/details/24838915
 
    
 
転載先:https://www.cnblogs.com/Lee-yl/p/10932287.html