Apache-pig-concat
提供:Dev Guides
Apache Pig-CONCAT()
Pig Latinの* CONCAT()*関数は、同じタイプの2つ以上の式を連結するために使用されます。
構文
grunt> CONCAT (expression, expression, [...expression])
例
以下に示すように、HDFSディレクトリ /pig_data/ に student_details.txt という名前のファイルがあると仮定します。
*student_details.txt*
001,Rajiv,Reddy,21,9848022337,Hyderabad,89
002,siddarth,Battacharya,22,9848022338,Kolkata,78
003,Rajesh,Khanna,22,9848022339,Delhi,90
004,Preethi,Agarwal,21,9848022330,Pune,93
005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar,75
006,Archana,Mishra,23,9848022335,Chennai,87
007,Komal,Nayak,24,9848022334,trivendram,83
008,Bharathi,Nambiayar,24,9848022333,Chennai,72
そして、以下に示すように、このファイルをリレーション名 student_details でPigにロードしました。
grunt> student_details = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
as (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray, gpa:int);
2つの文字列を連結する
- CONCAT()関数を使用して、2つ以上の式を連結できます。 まず、以下に示すように、ダンプ演算子を使用して *student_details 関係の内容を確認します。
grunt> Dump student_details;
( 1,Rajiv,Reddy,21,9848022337,Hyderabad,89 )
( 2,siddarth,Battacharya,22,9848022338,Kolkata,78 )
( 3,Rajesh,Khanna,22,9848022339,Delhi,90 )
( 4,Preethi,Agarwal,21,9848022330,Pune,93 )
( 5,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar,75 )
( 6,Archana,Mishra,23,9848022335,Chennai,87 )
( 7,Komal,Nayak,24,9848022334,trivendram,83 )
( 8,Bharathi,Nambiayar,24,9848022333,Chennai,72 )
そして、以下に示すように describe 演算子を使用してスキーマを検証します。
grunt> Describe student_details;
student_details: {id: int, firstname: chararray, lastname: chararray, age: int,
phone: chararray, city: chararray, gpa: int}
上記のスキーマでは、学生の名前が2つのchararray値、つまり firstname と lastname を使用して表されていることがわかります。 * CONCAT()*関数を使用して、これら2つの値を連結します。
grunt> student_name_concat = foreach student_details Generate CONCAT (firstname, lastname);
検証
以下に示すように、 DUMP 演算子を使用して、リレーション student_name_concat を確認します。
grunt> Dump student_name_concat;
出力
リレーション student_name_concat の内容を表示する次の出力を生成します。
(RajivReddy)
(siddarthBattacharya)
(RajeshKhanna)
(PreethiAgarwal)
(TrupthiMohanthy)
(ArchanaMishra)
(KomalNayak)
(BharathiNambiayar)
以下に示すように、2つの式の間にオプションの区切り文字を使用することもできます。
grunt> CONCAT(firstname, '_',lastname);
ここで、 student_details 関係の生徒レコードの名と姓を連結します(下に示すように、それらの間に ‘_’ を配置します)。
grunt> student_name_concat = foreach student_details GENERATE CONCAT(firstname, '_',lastname);
検証
以下に示すように、 DUMP 演算子を使用して、リレーション student_name_concat を確認します。
grunt> Dump student_name_concat;
出力
次の出力が生成され、リレーション student_name_concat の内容が次のように表示されます。
(Rajiv_Reddy)
(siddarth_Battacharya)
(Rajesh_Khanna)
(Preethi_Agarwal)
(Trupthi_Mohanthy)
(Archana_Mishra)
(Komal_Nayak)
(Bharathi_Nambiayar)