Apache-pig-bagtostring
提供:Dev Guides
Apache Pig-BagToString()
Pig Latin * BagToString()*関数は、バッグの要素を文字列に連結するために使用されます。 連結中に、これらの値の間に区切り文字を配置できます(オプション)。
通常、バッグは乱れているため、 ORDER BY 演算子を使用して整理できます。
構文
以下に、* BagToString()*関数の構文を示します。
grunt> BagToString(vals:bag [, delimiter:chararray])
例
以下に示すように、HDFSディレクトリ /pig_data/ に dateofbirth.txt という名前のファイルがあると仮定します。 このファイルには生年月日が含まれています。
*dateofbirth.txt*
22,3,1990
23,11,1989
1,3,1998
2,6,1980
26,9,1989
そして、以下に示すように、このファイルを関係名 dob でPigにロードしました。
grunt> dob = LOAD 'hdfs://localhost:9000/pig_data/dateofbirth.txt' USING PigStorage(',')
as (day:int, month:int, year:int);
バッグを文字列に変換する
bagtostring()関数を使用して、バッグ内のデータを文字列に変換できます。 *dob 関係をグループ化します。 グループ操作は、リレーションのすべてのタプルを含むバッグを作成します。
*Group All* 演算子を使用してリレーション *dob* をグループ化し、以下に示すように *group_dob* という名前のリレーションに結果を保存します。
grunt> group_dob = Group dob All;
以下に示すような関係が生成されます。
grunt> Dump group_dob;
(all,{(26,9,1989),(2,6,1980),(1,3,1998),(23,11,1989),(22,3,1990)})
ここでは、すべての生年月日をタプルとして持つバッグを見ることができます。 次に、関数* BagToString()*を使用して、バッグを文字列に変換しましょう。
grunt> dob_string = foreach group_dob Generate BagToString(dob);
検証
以下に示すように、 DUMP 演算子を使用してリレーション dob_string を確認します。
grunt> Dump dob_string;
出力
リレーション dob_string の内容を表示する次の出力を生成します。
(26_9_1989_2_6_1980_1_3_1998_23_11_1989_22_3_1990)