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.

kolumna ID Imię nazwisko telefon Miasto
typ danych int tablica znaków tablica znaków tablica znaków tablica znaków

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.