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」を取ります。
スキーマ

以下のスキーマを使用してデータを保存しました。

カラム id ファーストネーム 苗字 電話
データ・タイプ int char配列 char配列 char配列 char配列

Noteloadステートメントは、Pigで指定されたリレーションにデータをロードするだけです。の実行を確認するにはLoad ステートメント、あなたは使用する必要があります Diagnostic Operators これについては、次の章で説明します。