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 これについては、次の章で説明します。