Hadoop Pig-zelfstudie: wat is Apache Pig? Architectuur, voorbeeld
We beginnen met de introductie van Varken
Wat is Apache Pig?
Pig is een programmeertaal op hoog niveau die nuttig is voor het analyseren van grote datasets. Pig was het resultaat van ontwikkelingsinspanningen bij Yahoo!
In een MapReduce-framework moeten programma's worden vertaald in een reeks Map- en Reduce-fasen. Dit is echter geen programmeermodel waar data-analisten bekend mee zijn. Om deze kloof te overbruggen werd een abstractie genaamd Pig bovenop Hadoop gebouwd.
Apache Pig zorgt ervoor dat mensen zich meer kunnen concentreren het analyseren van bulkdatasets en om minder tijd te besteden aan het schrijven van Map-Reduce-programma's. Vergelijkbaar met varkens, die alles eten, het Apache-varken programmeertaal is ontworpen om met elk soort gegevens te werken. Dat is de reden waarom de naam, Varken!

In deze Apache Pig-tutorial voor beginners leer je:
Varken Architectuur
Het Architectuur van Pig bestaat uit twee componenten:
-
Varken Latijn, wat een taal is
-
Een runtime-omgeving, voor het uitvoeren van PigLatin-programma's.
Een Pig Latin-programma bestaat uit een reeks bewerkingen of transformaties die worden toegepast op de invoergegevens om uitvoer te produceren. Deze bewerkingen beschrijven een gegevensstroom die wordt vertaald naar een uitvoerbare representatie, door de Hadoop Pig-uitvoeringsomgeving. Daaronder zijn de resultaten van deze transformaties reeksen MapReduce-taken waarvan een programmeur zich niet bewust is. Dus op een bepaalde manier stelt Pig in Hadoop de programmeur in staat om zich te concentreren op gegevens in plaats van op de aard van de uitvoering.
PigLatin is een relatief stijve taal die bekende trefwoorden uit de gegevensverwerking gebruikt, bijvoorbeeld Join, Group en Filter.
Uitvoeringsmodi:
Pig in Hadoop heeft twee uitvoeringsmodi:
-
Lokale modus: in deze modus wordt de Hadoop Pig-taal in één keer uitgevoerd JVM en maakt gebruik van een lokaal bestandssysteem. Deze modus is alleen geschikt voor analyse van kleine datasets met Pig in Hadoop
-
Map Reduce-modus: in deze modus worden zoekopdrachten die in Pig Latin zijn geschreven, vertaald naar KaartVerminderen taken en worden uitgevoerd op een Hadoop-cluster (cluster kan pseudo of volledig gedistribueerd zijn). De MapReduce-modus met het volledig gedistribueerde cluster is handig voor het uitvoeren van Pig op grote datasets.
Pig downloaden en installeren
In deze Apache Pig-tutorial leren we nu hoe we Pig kunnen downloaden en installeren:
Voordat we met het eigenlijke proces beginnen, zorg ervoor dat Hadoop is geïnstalleerd. Wijzig de gebruiker in 'hduser' (ID gebruikt tijdens de Hadoop-configuratie, u kunt overschakelen naar de userid die u tijdens uw Hadoop-configuratie gebruikt)
Stap 1) Download de stabiele nieuwste release van Pig Hadoop van een van de mirrors-sites die beschikbaar zijn op
http://pig.apache.org/releases.html
kies tar.gz (en niet src.tar.gz) bestand om te downloaden.
Stap 2) Zodra een download is voltooid, navigeert u naar de map met het gedownloade tar-bestand en verplaatst u de tar naar de locatie waar u Pig Hadoop wilt instellen. In dit geval gaan we naar /usr/local
Ga naar een map met Pig Hadoop-bestanden
cd /usr/local
Pak de inhoud van het tar-bestand uit, zoals hieronder
sudo tar -xvf pig-0.12.1.tar.gz
Stap 3). wijzigen ~ / .bashrc om Pig-gerelateerde omgevingsvariabelen toe te voegen
Openen ~ / .bashrc bestand in een teksteditor naar keuze en breng onderstaande wijzigingen aan:
export PIG_HOME=<Installation directory of Pig> export PATH=$PIG_HOME/bin:$HADOOP_HOME/bin:$PATH
Stap 4) Bron nu deze omgevingsconfiguratie met behulp van onderstaande opdracht
. ~/.bashrc
Stap 5) We moeten opnieuw compileren VARKEN ondersteunen Hadoop 2.2.0
Hier zijn de stappen om dit te doen-
Ga naar de PIG-thuismap
cd $PIG_HOME
Installeer Ant
sudo apt-get install ant
Opmerking: het downloaden begint en kost tijd, afhankelijk van uw internetsnelheid.
PIG opnieuw compileren
sudo ant clean jar-all -Dhadoopversion=23
Houd er rekening mee dat tijdens dit hercompilatieproces meerdere componenten worden gedownload. Een systeem moet dus verbonden zijn met internet.
Als dit proces ergens vastloopt en u gedurende meer dan 20 minuten geen beweging ziet op de opdrachtprompt, druk dan op Ctrl + c en voer dezelfde opdracht opnieuw uit.
In ons geval duurt het 20 minuten
Stap voor 6) Test de Varken installatie met behulp van de opdracht
pig -help
Voorbeeld varkensscript
We zullen Pig Scripts gebruiken om het aantal verkochte producten in elk land te vinden.
Input: Onze invoergegevensset is een CSV-bestand, VerkoopJan2009.csv
Stap voor 1) Hadoop starten
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
Stap voor 2) Pig in Big Data haalt een bestand uit HDFS in MapReduce-modus en slaat de resultaten weer op in HDFS.
Kopieer bestand VerkoopJan2009.csv (opgeslagen op lokaal bestandssysteem, ~/input/SalesJan2009.csv) naar de HDFS-basismap (Hadoop Distributed File System).
Hier in dit Apache Pig-voorbeeld bevindt het bestand zich in mapinvoer. Als het bestand op een andere locatie is opgeslagen, geeft u die naam op
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal ~/input/SalesJan2009.csv /
Controleer of een bestand daadwerkelijk wordt gekopieerd of niet.
$HADOOP_HOME/bin/hdfs dfs -ls /
Stap 3) Varkensconfiguratie
Navigeer eerst naar $PIG_HOME/conf
cd $PIG_HOME/conf
sudo cp pig.properties pig.properties.original
Openen varkenseigenschappen met behulp van een teksteditor naar keuze, en geef het pad naar het logbestand op met behulp van pig.logbestand
sudo gedit pig.properties
Loger zal dit bestand gebruiken om fouten te loggen.
Stap 4) Voer de opdracht 'pig' uit, waardoor de Pig-opdrachtprompt wordt gestart, een interactieve shell-Pig-query.
pig
Stap 5)Voer in de Grunt-opdrachtprompt voor Pig de onderstaande Pig-opdrachten in volgorde uit.
— A. Laad het bestand met gegevens.
salesTable = LOAD '/SalesJan2009.csv' USING PigStorage(',') AS (Transaction_date:chararray,Product:chararray,Price:chararray,Payment_Type:chararray,Name:chararray,City:chararray,State:chararray,Country:chararray,Account_Created:chararray,Last_Login:chararray,Latitude:chararray,Longitude:chararray);
Druk na deze opdracht op Enter.
— B. Gegevens groeperen op veld Land
GroupByCountry = GROUP salesTable BY Country;
— C. Voor elk tuple in 'Groeperen per land', genereer de resulterende tekenreeks van het formulier-> Naam van land: aantal verkochte producten
CountByCountry = FOREACH GroupByCountry GENERATE CONCAT((chararray)$0,CONCAT(':',(chararray)COUNT($1)));
Druk na deze opdracht op Enter.
— D. Sla de resultaten van Data Flow op in de map 'pig_output_sales' op HDFS
STORE CountByCountry INTO 'pig_output_sales' USING PigStorage('\t');
Het uitvoeren van deze opdracht duurt even. Als het eenmaal is uitgevoerd, zou u het volgende scherm moeten zien
Stap 6) Het resultaat kan via de opdrachtinterface worden gezien als,
$HADOOP_HOME/bin/hdfs dfs -cat pig_output_sales/part-r-00000
Resultaten kunnen ook worden bekeken via een webinterface als-
Resultaten via een webinterface-
Openen http://localhost:50070/
in een webbrowser.
selecteer nu 'Blader door het bestandssysteem' en navigeer ernaartoe /user/hduser/pig_output_sales
Openen onderdeel-r-00000