Apache Pig - odczyt danych
Ogólnie rzecz biorąc, Apache Pig działa na platformie Hadoop. Jest to narzędzie analityczne, które analizuje duże zbiory danych, które istnieją wHadoop File System. Aby przeanalizować dane za pomocą Apache Pig, musimy wstępnie załadować dane do Apache Pig. W tym rozdziale wyjaśniono, jak ładować dane do Apache Pig z HDFS.
Przygotowuję HDFS
W trybie MapReduce Pig odczytuje (ładuje) dane z HDFS i zapisuje wyniki z powrotem w HDFS. Dlatego uruchommy HDFS i stwórzmy następujące przykładowe dane w HDFS.
legitymacja studencka | Imię | Nazwisko | Telefon | Miasto |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | siddarth | Battacharya | 9848022338 | Kalkuta |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanthy | 9848022336 | Bhuwaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
Powyższy zbiór danych zawiera dane osobowe, takie jak identyfikator, imię, nazwisko, numer telefonu i miasto sześciu uczniów.
Krok 1: Weryfikacja Hadoop
Przede wszystkim sprawdź instalację za pomocą polecenia wersji Hadoop, jak pokazano poniżej.
$ hadoop version
Jeśli twój system zawiera Hadoop i jeśli ustawiłeś zmienną PATH, otrzymasz następujące dane wyjściowe -
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
Krok 2: Uruchamianie HDFS
Przejrzyj sbin katalogu Hadoop i uruchom yarn i Hadoop dfs (rozproszony system plików), jak pokazano poniżej.
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
Krok 3: Utwórz katalog w HDFS
W Hadoop DFS można tworzyć katalogi za pomocą polecenia mkdir. Utwórz nowy katalog w HDFS o nazwiePig_Data w wymaganej ścieżce, jak pokazano poniżej.
$cd /$Hadoop_Home/bin/
$ hdfs dfs -mkdir hdfs://localhost:9000/Pig_Data
Krok 4: Umieszczanie danych w HDFS
Plik wejściowy Pig zawiera każdą krotkę / rekord w oddzielnych wierszach. Elementy rekordu są oddzielone separatorem (w naszym przykładzie użyliśmy“,”).
W lokalnym systemie plików utwórz plik wejściowy student_data.txt zawierające dane, jak pokazano poniżej.
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.
Teraz przenieś plik z lokalnego systemu plików do HDFS przy użyciu putpolecenie, jak pokazano poniżej. (Możesz użyćcopyFromLocal polecenie.)
$ cd $HADOOP_HOME/bin
$ hdfs dfs -put /home/Hadoop/Pig/Pig_Data/student_data.txt dfs://localhost:9000/pig_data/
Weryfikacja pliku
Możesz użyć cat polecenie, aby sprawdzić, czy plik został przeniesiony do HDFS, jak pokazano poniżej.
$ cd $HADOOP_HOME/bin
$ hdfs dfs -cat hdfs://localhost:9000/pig_data/student_data.txt
Wynik
Możesz zobaczyć zawartość pliku, jak pokazano poniżej.
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
Operator obciążenia
Możesz ładować dane do Apache Pig z systemu plików (HDFS / lokalny) za pomocą LOAD operator Pig Latin.
Składnia
Instrukcja load składa się z dwóch części podzielonych przez operator „=”. Po lewej stronie musimy wspomnieć o nazwie relacjiwhere chcemy przechowywać dane, a po prawej stronie musimy zdefiniować howprzechowujemy dane. Poniżej podano składnięLoad operator.
Relation_name = LOAD 'Input file path' USING function as schema;
Gdzie,
relation_name - Musimy wspomnieć o relacji, w której chcemy przechowywać dane.
Input file path- Musimy wspomnieć o katalogu HDFS, w którym przechowywany jest plik. (W trybie MapReduce)
function - Musimy wybrać funkcję z zestawu funkcji ładowania dostarczonych przez Apache Pig (BinStorage, JsonLoader, PigStorage, TextLoader).
Schema- Musimy zdefiniować schemat danych. Możemy zdefiniować wymagany schemat w następujący sposób -
(column1 : data type, column2 : data type, column3 : data type);
Note- Wczytujemy dane bez określania schematu. W takim przypadku kolumny będą adresowane jako 01 $, $ 02, itd… (sprawdź).
Przykład
Jako przykład załadujmy dane do student_data.txt w Pig w ramach schematu o nazwie Student używając LOAD Komenda.
Uruchom Pig Grunt Shell
Przede wszystkim otwórz terminal Linux. Uruchom powłokę Pig Grunt w trybie MapReduce, jak pokazano poniżej.
$ Pig –x mapreduce
Uruchomi powłokę Pig Grunt, jak pokazano poniżej.
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>
Wykonaj instrukcję Load
Teraz załaduj dane z pliku student_data.txt do Pig, wykonując następującą instrukcję Pig Latin w powłoce Grunt.
grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt'
USING PigStorage(',')
as ( id:int, firstname:chararray, lastname:chararray, phone:chararray,
city:chararray );
Poniżej znajduje się opis powyższego stwierdzenia.
Nazwa relacji | Przechowaliśmy dane w schemacie student. | ||||||||||||
Ścieżka do pliku wejściowego | Odczytujemy dane z pliku student_data.txt, który znajduje się w katalogu / pig_data / w HDFS. | ||||||||||||
Funkcja przechowywania | Użyliśmy PigStorage()funkcjonować. Ładuje i przechowuje dane jako ustrukturyzowane pliki tekstowe. Jako parametr przyjmuje separator, za pomocą którego każda jednostka krotki jest oddzielana. Domyślnie jako parametr przyjmuje „\ t”. | ||||||||||||
schemat | Przechowaliśmy dane przy użyciu następującego schematu.
|
Note - The loadinstrukcja po prostu załaduje dane do określonej relacji w Pig. Aby zweryfikować wykonanieLoad musisz użyć Diagnostic Operators które są omówione w następnych rozdziałach.