Apache-pig-pigstore

提供:Dev Guides
移動先:案内検索

Apache Pig-PigStorage()

  • PigStorage()関数は、データを構造化テキストファイルとしてロードおよび保存します。 タプルの各エンティティをパラメーターとして区切る区切り文字を使用します。 デフォルトでは、パラメータとして *’\ t’ を取ります。

構文

以下は、* PigStorage()*関数の構文です。

grunt> PigStorage(field_delimiter)

*/data/* という名前のHDFSディレクトリに *student_data.txt* という名前のファイルがあり、次の内容があるとします。
001,Rajiv,Reddy,9848022337,Hyderabad
002,siddarth,Battacharya,9848022338,Kolkata
003,Rajesh,Khanna,9848022339,Delhi
004,Preethi,Agarwal,9848022330,Pune
005,Trupthi,Mohanthy,9848022336,Bhuwaneshwar
006,Archana,Mishra,9848022335,Chennai.

以下に示すように、PigStorage関数を使用してデータをロードできます。

grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt' USING PigStorage(',')
   as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );

上記の例では、コンマ*( ‘、’)区切り文字を使用していることがわかりました。 したがって、(、)*を使用してレコードの値を分離しました。

同様に、以下に示すように、* PigStorage()*関数を使用して、HDFSディレクトリにデータを保存できます。

grunt> STORE student INTO ' hdfs://localhost:9000/pig_Output/' USING PigStorage (',');

これにより、指定されたディレクトリにデータが保存されます。 以下に示すように、データを確認できます。

検証

以下に示すように、保存されたデータを確認できます。 まず、以下に示すように ls コマンドを使用して、 pig_output という名前のディレクトリ内のファイルをリストします。

$ hdfs dfs -ls 'hdfs://localhost:9000/pig_Output/'

Found 2 items
rw-r--r- 1 Hadoop supergroup 0 2015-10-05 13:03 hdfs://localhost:9000/pig_Output/_SUCCESS

rw-r--r- 1 Hadoop supergroup 224 2015-10-05 13:03 hdfs://localhost:9000/pig_Output/part-m-00000
*Store* ステートメントの実行後に2つのファイルが作成されたことを確認できます。

次に、 cat コマンドを使用して、 part-m-00000 という名前のファイルの内容を以下に示すようにリストします。

$ hdfs dfs -cat 'hdfs://localhost:9000/pig_Output/part-m-00000'

1,Rajiv,Reddy,9848022337,Hyderabad
2,siddarth,Battacharya,9848022338,Kolkata
3,Rajesh,Khanna,9848022339,Delhi
4,Preethi,Agarwal,9848022330,Pune
5,Trupthi,Mohanthy,9848022336,Bhuwaneshwar
6,Archana,Mishra,9848022335,Chennai