Apache Pig - Daten lesen
Im Allgemeinen arbeitet Apache Pig auf Hadoop. Es ist ein Analysetool, das große Datensätze analysiert, die in derHadoop File System. Um Daten mit Apache Pig zu analysieren, müssen wir die Daten zunächst in Apache Pig laden. In diesem Kapitel wird erläutert, wie Sie Daten aus HDFS in Apache Pig laden.
HDFS vorbereiten
Im MapReduce-Modus liest (lädt) Pig Daten aus HDFS und speichert die Ergebnisse wieder in HDFS. Lassen Sie uns daher HDFS starten und die folgenden Beispieldaten in HDFS erstellen.
Studenten ID | Vorname | Familienname, Nachname | Telefon | Stadt |
---|---|---|---|---|
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 |
Der obige Datensatz enthält persönliche Daten wie ID, Vorname, Nachname, Telefonnummer und Stadt von sechs Studenten.
Schritt 1: Überprüfen von Hadoop
Überprüfen Sie zunächst die Installation mit dem Befehl Hadoop version (siehe unten).
$ hadoop version
Wenn Ihr System Hadoop enthält und Sie die Variable PATH festgelegt haben, erhalten Sie die folgende Ausgabe:
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
Schritt 2: Starten von HDFS
Durchsuchen Sie die sbin Verzeichnis von Hadoop und starten yarn und Hadoop dfs (verteiltes Dateisystem) wie unten gezeigt.
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
Schritt 3: Erstellen Sie ein Verzeichnis in HDFS
In Hadoop DFS können Sie mit dem Befehl Verzeichnisse erstellen mkdir. Erstellen Sie ein neues Verzeichnis in HDFS mit dem NamenPig_Data im erforderlichen Pfad wie unten gezeigt.
$cd /$Hadoop_Home/bin/
$ hdfs dfs -mkdir hdfs://localhost:9000/Pig_Data
Schritt 4: Platzieren der Daten in HDFS
Die Eingabedatei von Pig enthält jedes Tupel / jeden Datensatz in einzelnen Zeilen. Und die Entitäten des Datensatzes werden durch ein Trennzeichen getrennt (in unserem Beispiel haben wir verwendet“,”).
Erstellen Sie im lokalen Dateisystem eine Eingabedatei student_data.txt enthält Daten wie unten gezeigt.
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.
Verschieben Sie nun die Datei mit aus dem lokalen Dateisystem nach HDFS putBefehl wie unten gezeigt. (Sie können verwendencopyFromLocal Befehl auch.)
$ cd $HADOOP_HOME/bin
$ hdfs dfs -put /home/Hadoop/Pig/Pig_Data/student_data.txt dfs://localhost:9000/pig_data/
Überprüfen der Datei
Du kannst den ... benutzen cat Befehl, um zu überprüfen, ob die Datei in das HDFS verschoben wurde, wie unten gezeigt.
$ cd $HADOOP_HOME/bin
$ hdfs dfs -cat hdfs://localhost:9000/pig_data/student_data.txt
Ausgabe
Sie können den Inhalt der Datei wie unten gezeigt sehen.
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
Der Lastoperator
Sie können Daten aus dem Dateisystem (HDFS / Local) mit in Apache Pig laden LOAD Betreiber von Pig Latin.
Syntax
Die load-Anweisung besteht aus zwei Teilen, die durch den Operator "=" geteilt werden. Auf der linken Seite müssen wir den Namen der Beziehung erwähnenwhere Wir wollen die Daten speichern und auf der rechten Seite müssen wir definieren howWir speichern die Daten. Unten ist die Syntax von angegebenLoad Operator.
Relation_name = LOAD 'Input file path' USING function as schema;
Wo,
relation_name - Wir müssen die Beziehung erwähnen, in der wir die Daten speichern möchten.
Input file path- Wir müssen das HDFS-Verzeichnis erwähnen, in dem die Datei gespeichert ist. (Im MapReduce-Modus)
function - Wir müssen eine Funktion aus den von Apache Pig bereitgestellten Ladefunktionen auswählen (BinStorage, JsonLoader, PigStorage, TextLoader).
Schema- Wir müssen das Schema der Daten definieren. Wir können das erforderliche Schema wie folgt definieren:
(column1 : data type, column2 : data type, column3 : data type);
Note- Wir laden die Daten ohne Angabe des Schemas. In diesem Fall werden die Spalten als $ 01, $ 02 usw. adressiert (überprüfen).
Beispiel
Als Beispiel laden wir die Daten in student_data.txt in Pig unter dem genannten Schema Student Verwendung der LOAD Befehl.
Starten Sie die Pig Grunt Shell
Öffnen Sie zunächst das Linux-Terminal. Starten Sie die Pig Grunt-Shell im MapReduce-Modus wie unten gezeigt.
$ Pig –x mapreduce
Die Pig Grunt-Shell wird wie unten gezeigt gestartet.
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>
Führen Sie die Ladeanweisung aus
Laden Sie nun die Daten aus der Datei student_data.txt in Pig durch Ausführen der folgenden Pig Latin-Anweisung in der Grunt-Shell.
grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt'
USING PigStorage(',')
as ( id:int, firstname:chararray, lastname:chararray, phone:chararray,
city:chararray );
Es folgt die Beschreibung der obigen Aussage.
Beziehungsname | Wir haben die Daten im Schema gespeichert student. | ||||||||||||
Pfad der Eingabedatei | Wir lesen Daten aus der Datei student_data.txt, Das befindet sich im Verzeichnis / pig_data / von HDFS. | ||||||||||||
Speicherfunktion | Wir haben das benutzt PigStorage()Funktion. Es lädt und speichert Daten als strukturierte Textdateien. Es wird ein Trennzeichen als Parameter verwendet, mit dem jede Entität eines Tupels getrennt wird. Standardmäßig wird '\ t' als Parameter verwendet. | ||||||||||||
Schema | Wir haben die Daten mit dem folgenden Schema gespeichert.
|
Note - Die loadDie Anweisung lädt die Daten einfach in die angegebene Beziehung in Pig. Um die Ausführung des zu überprüfenLoad Anweisung müssen Sie die verwenden Diagnostic Operators die in den nächsten Kapiteln besprochen werden.