Apache-pig-reading-data
Apache Pig-データの読み取り
一般的に、Apache PigはHadoopの上で動作します。 これは、* H adoop F ile S *システムに存在する大規模なデータセットを分析する分析ツールです。 Apache Pigを使用してデータを分析するには、最初にデータをApache Pigにロードする必要があります。 この章では、HDFSからApache Pigにデータをロードする方法について説明します。
HDFSの準備
MapReduceモードでは、PigはHDFSからデータを読み取り(ロード)、HDFSに結果を保存します。 したがって、HDFSを起動し、HDFSに次のサンプルデータを作成します。
Student ID | First Name | Last Name | Phone | City |
---|---|---|---|---|
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 |
上記のデータセットには、6人の学生のID、名、姓、電話番号、市などの個人情報が含まれています。
ステップ1:Hadoopの検証
まず、以下に示すように、Hadoop versionコマンドを使用してインストールを確認します。
システムにHadoopが含まれていて、PATH変数を設定している場合、次の出力が得られます-
ステップ2:HDFSの開始
以下に示すように、Hadoopの sbin ディレクトリを参照し、 yarn およびHadoop dfs(分散ファイルシステム)を起動します。
ステップ3:HDFSでディレクトリを作成する
Hadoop DFSでは、 mkdir コマンドを使用してディレクトリを作成できます。 以下に示すように、必要なパスに Pig_Data という名前でHDFSに新しいディレクトリを作成します。
ステップ4:データをHDFSに配置する
Pigの入力ファイルには、個々の行に各タプル/レコードが含まれています。 また、レコードのエンティティは区切り文字で区切られています(この例では*“、” *を使用しました)。
ローカルファイルシステムで、以下に示すデータを含む入力ファイル student_data.txt を作成します。
次に、以下に示すように put コマンドを使用して、ローカルファイルシステムからHDFSにファイルを移動します。 ( copyFromLocal コマンドも使用できます。)
ファイルを検証する
以下に示すように、 cat コマンドを使用して、ファイルがHDFSに移動されたかどうかを確認できます。
出力
以下に示すように、ファイルの内容を確認できます。
ロードオペレーター
構文
ロードステートメントは、「=」演算子で分割された2つの部分で構成されます。 左側では、データを保存するリレーションの名前( where )を指定する必要があり、右側では、データを保存する*方法*を定義する必要があります。 以下に、 Load 演算子の構文を示します。
どこで、
- relation_name -データを保存するリレーションについて言及する必要があります。
- 入力ファイルのパス-ファイルが保存されているHDFSディレクトリに言及する必要があります。 (MapReduceモードの場合)
- 関数-Apache Pigが提供する一連のロード関数( BinStorage、JsonLoader、PigStorage、TextLoader )から関数を選択する必要があります。
- スキーマ-データのスキーマを定義する必要があります。 次のように必要なスキーマを定義できます-
注意-スキーマを指定せずにデータをロードします。 その場合、列は$ 01、$ 02などとしてアドレス指定されます(チェック)。
例
例として、 LOAD コマンドを使用して、 Student という名前のスキーマの下にあるPigの student_data.txt のデータをロードします。
Pig Grunt Shellを開始します
まず、Linuxターミナルを開きます。 以下に示すように、MapReduceモードでPig Gruntシェルを開始します。
以下に示すように、Pig Gruntシェルが起動します。
Loadステートメントを実行する
Gruntシェルで次のPig Latinステートメントを実行して、ファイル student_data.txt からPigにデータをロードします。
以下は、上記の説明の説明です。
Relation name | We have stored the data in the schema student. |
Input file path | We are reading data from the file *student_data.txt, *which is in the/pig_data/directory of HDFS. |
Storage function | We have used the* PigStorage()* function. It loads and stores data as structured text files. It takes a delimiter using which each entity of a tuple is separated, as a parameter. By default, it takes ‘\t’ as a parameter. |
schema | We have stored the data using the following schema. |
|column |id |firstname |lastname |phone |city |datatype |int |char array |char array |char array |char array
注- load ステートメントは、Pigで指定されたリレーションにデータを単にロードします。 Load ステートメントの実行を検証するには、次の章で説明する Diagnostic Operators を使用する必要があります。