ApachePig-データの読み取り
一般に、ApachePigはHadoop上で動作します。これは、に存在する大規模なデータセットを分析する分析ツールです。Hadoop File Sシステム。Apache Pigを使用してデータを分析するには、最初にデータをApachePigにロードする必要があります。この章では、HDFSからApachePigにデータをロードする方法について説明します。
HDFSの準備
MapReduceモードでは、PigはHDFSからデータを読み取り(ロード)、結果をHDFSに保存します。したがって、HDFSを起動し、HDFSで次のサンプルデータを作成しましょう。
| 学生証 | ファーストネーム | 苗字 | 電話 | 市 | 
|---|---|---|---|---|
| 001 | ラジブ | レディ | 9848022337 | ハイデラバード | 
| 002 | siddarth | バタチャリヤ | 9848022338 | コルカタ | 
| 003 | ラジェッシュ | カンナ | 9848022339 | デリー | 
| 004 | Preethi | アガルワル | 9848022330 | プネ | 
| 005 | Trupthi | モハンシー | 9848022336 | ブバネシュワール | 
| 006 | アルカナ | ミシュラ | 9848022335 | チェンナイ | 
上記のデータセットには、6人の学生のID、名、姓、電話番号、都市などの個人情報が含まれています。
ステップ1:Hadoopを確認する
まず、以下に示すように、Hadoopバージョンコマンドを使用してインストールを確認します。
$ hadoop versionシステムにHadoopが含まれていて、PATH変数を設定している場合は、次の出力が得られます。
Hadoop 2.6.0 
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 
e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1 
Compiled by jenkins on 2014-11-13T21:10Z 
Compiled with protoc 2.5.0 
From source with checksum 18e43357c8f927c0695f1e9522859d6a 
This command was run using /home/Hadoop/hadoop/share/hadoop/common/hadoop
common-2.6.0.jarステップ2:HDFSを開始する
を閲覧する sbin Hadoopのディレクトリと開始 yarn 以下に示すように、Hadoop dfs(分散ファイルシステム)。
cd /$Hadoop_Home/sbin/ 
$ start-dfs.sh 
localhost: starting namenode, logging to /home/Hadoop/hadoop/logs/hadoopHadoop-namenode-localhost.localdomain.out 
localhost: starting datanode, logging to /home/Hadoop/hadoop/logs/hadoopHadoop-datanode-localhost.localdomain.out 
Starting secondary namenodes [0.0.0.0] 
starting secondarynamenode, logging to /home/Hadoop/hadoop/logs/hadoop-Hadoopsecondarynamenode-localhost.localdomain.out
 
$ start-yarn.sh 
starting yarn daemons 
starting resourcemanager, logging to /home/Hadoop/hadoop/logs/yarn-Hadoopresourcemanager-localhost.localdomain.out 
localhost: starting nodemanager, logging to /home/Hadoop/hadoop/logs/yarnHadoop-nodemanager-localhost.localdomain.outステップ3:HDFSでディレクトリを作成する
Hadoop DFSでは、コマンドを使用してディレクトリを作成できます mkdir。HDFSに次の名前の新しいディレクトリを作成しますPig_Data 以下に示すように、必要なパスで。
$cd /$Hadoop_Home/bin/ 
$ hdfs dfs -mkdir hdfs://localhost:9000/Pig_Dataステップ4:データをHDFSに配置する
Pigの入力ファイルには、各タプル/レコードが個別の行に含まれています。そして、レコードのエンティティは区切り文字で区切られます(この例では“,”)。
ローカルファイルシステムで、入力ファイルを作成します 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.次に、を使用してファイルをローカルファイルシステムからHDFSに移動します put以下に示すコマンド。(あなたは使用することができますcopyFromLocal コマンドも。)
$ cd $HADOOP_HOME/bin 
$ hdfs dfs -put /home/Hadoop/Pig/Pig_Data/student_data.txt dfs://localhost:9000/pig_data/ファイルの確認
あなたは使用することができます cat 以下に示すように、ファイルがHDFSに移動されたかどうかを確認するコマンド。
$ cd $HADOOP_HOME/bin
$ hdfs dfs -cat hdfs://localhost:9000/pig_data/student_data.txt出力
以下に示すように、ファイルの内容を確認できます。
15/10/01 12:16:55 WARN util.NativeCodeLoader: Unable to load native-hadoop
library for your platform... using builtin-java classes where applicable
  
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ロード演算子
を使用して、ファイルシステム(HDFS /ローカル)からApachePigにデータをロードできます。 LOAD の演算子 Pig Latin。
構文
loadステートメントは、「=」演算子で分割された2つの部分で構成されます。左側に、関係の名前を記載する必要がありますwhere データを保存したいので、右側に定義する必要があります howデータを保存します。以下に示すのは、Load オペレーター。
Relation_name = LOAD 'Input file path' USING function as schema;どこ、
- relation_name −データを保存したい関係について言及する必要があります。 
- Input file path−ファイルが保存されているHDFSディレクトリについて言及する必要があります。(MapReduceモードの場合) 
- function − Apache Pigが提供する一連のロード関数から関数を選択する必要があります(BinStorage, JsonLoader, PigStorage, TextLoader)。 
- Schema−データのスキーマを定義する必要があります。必要なスキーマは次のように定義できます- 
(column1 : data type, column2 : data type, column3 : data type);Note−スキーマを指定せずにデータをロードします。その場合、列は$ 01、$ 02などとしてアドレス指定されます…(チェック)。
例
例として、にデータをロードしましょう student_data.txt 名前のスキーマの下のPigで Student を使用して LOAD コマンド。
Pig GruntShellを開始します
まず、Linuxターミナルを開きます。以下に示すように、PigGruntシェルをMapReduceモードで起動します。
$ Pig –x mapreduce以下に示すように、PigGruntシェルが起動します。
15/10/01 12:33:37 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL
15/10/01 12:33:37 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE
15/10/01 12:33:37 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType
2015-10-01 12:33:38,080 [main] INFO  org.apache.pig.Main - Apache Pig version 0.15.0 (r1682971) compiled Jun 01 2015, 11:44:35
2015-10-01 12:33:38,080 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/Hadoop/pig_1443683018078.log
2015-10-01 12:33:38,242 [main] INFO  org.apache.pig.impl.util.Utils - Default bootup file /home/Hadoop/.pigbootup not found
  
2015-10-01 12:33:39,630 [main]
INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:9000
 
grunt>Loadステートメントを実行します
次に、ファイルからデータをロードします student_data.txt Gruntシェルで次のPigLatinステートメントを実行してPigに追加します。
grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt' 
   USING PigStorage(',')
   as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, 
   city:chararray );以下は、上記のステートメントの説明です。
| 関係名 | データをスキーマに保存しました student。 | ||||||||||||
| 入力ファイルパス | ファイルからデータを読み取っています student_data.txt, これは、HDFSの/ pig_data /ディレクトリにあります。 | ||||||||||||
| ストレージ機能 | 私たちは使用しました PigStorage()関数。データを構造化テキストファイルとしてロードおよび保存します。タプルの各エンティティを区切る区切り文字をパラメータとして使用します。デフォルトでは、パラメータとして「\ t」を取ります。 | ||||||||||||
| スキーマ | 以下のスキーマを使用してデータを保存しました。 
 | 
Note − loadステートメントは、Pigで指定されたリレーションにデータをロードするだけです。の実行を確認するにはLoad ステートメント、あなたは使用する必要があります Diagnostic Operators これについては、次の章で説明します。