Dela via


Använda Apache Pig med Apache Hadoop i HDInsight

Lär dig hur du använder Apache Pig med HDInsight.

Apache Pig är en plattform för att skapa program för Apache Hadoop med hjälp av ett procedurspråk som kallas Pig Latin. Pig är ett alternativ till Java för att skapa MapReduce-lösningar , och det ingår i Azure HDInsight. Använd följande tabell för att identifiera de olika sätt som Pig kan användas med HDInsight:

Varför använda Apache Pig

En av utmaningarna med att bearbeta data med hjälp av MapReduce i Hadoop är att implementera bearbetningslogik med hjälp av endast en karta och en reduce-funktion. För komplex bearbetning måste du ofta dela upp bearbetningen i flera MapReduce-åtgärder som är sammanlänkade för att uppnå önskat resultat.

Med Pig kan du definiera bearbetning som en serie transformeringar som data flödar genom för att generera önskade utdata.

Med det latinska pigspråket kan du beskriva dataflödet från råa indata, genom en eller flera transformeringar, för att skapa önskade utdata. Pig Latin-program följer det här allmänna mönstret:

  • Läs in: Läs in data som ska manipuleras från filsystemet.

  • Transformera: Manipulera data.

  • Dumpa eller lagra: Mata ut data till skärmen eller lagra dem för bearbetning.

Användardefinierade funktioner

Pig Latin har också stöd för användardefinierade funktioner (UDF), som gör att du kan anropa externa komponenter som implementerar logik som är svår att modellera i Pig Latin.

Mer information om Pig Latin finns i Pig Latin Reference Manual 1 och Pig Latin Reference Manual 2.

Exempeldata

HDInsight innehåller olika exempeldatauppsättningar som lagras i katalogerna /example/data och /HdiSamples . Dessa kataloger finns i standardlagringen för klustret. Pig-exemplet i det här dokumentet använder log4j-filen från /example/data/sample.log.

Varje logg inuti filen består av en rad fält som innehåller ett [LOG LEVEL] fält för att visa typen och allvarlighetsgraden, till exempel:

2012-02-03 20:26:41 SampleClass3 [ERROR] verbose detail for id 1527353937

I föregående exempel är loggnivån FEL.

Kommentar

Du kan också generera en log4j-fil med hjälp av Apache Log4j-loggningsverktyget och sedan ladda upp filen till din blob. Instruktioner finns i Ladda upp data till HDInsight . Mer information om hur blobar i Azure Storage används med HDInsight finns i Använda Azure Blob Storage med HDInsight.

Exempeljobb

Följande Pig Latin-jobb läser in sample.log filen från standardlagringen för HDInsight-klustret. Sedan utför den en serie transformeringar som resulterar i antalet hur många gånger varje loggnivå inträffade i indata. Resultatet skrivs till STDOUT.

LOGS = LOAD 'wasb:///example/data/sample.log';
LEVELS = foreach LOGS generate REGEX_EXTRACT($0, '(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)', 1)  as LOGLEVEL;
FILTEREDLEVELS = FILTER LEVELS by LOGLEVEL is not null;
GROUPEDLEVELS = GROUP FILTEREDLEVELS by LOGLEVEL;
FREQUENCIES = foreach GROUPEDLEVELS generate group as LOGLEVEL, COUNT(FILTEREDLEVELS.LOGLEVEL) as COUNT;
RESULT = order FREQUENCIES by COUNT desc;
DUMP RESULT;

Följande bild visar en sammanfattning av vad varje transformering gör med data.

Graphical representation of the transformations.

Kör pig latinskt jobb

HDInsight kan köra pig latinska jobb med hjälp av olika metoder. Använd följande tabell för att bestämma vilken metod som är rätt för dig och följ sedan länken för en genomgång.

Pig- och SQL Server Integration Services

Du kan använda SQL Server Integration Services (SSIS) för att köra ett Pig-jobb. Azure Feature Pack för SSIS innehåller följande komponenter som fungerar med Pig-jobb i HDInsight.

Läs mer om Azure Feature Pack för SSIS här.

Nästa steg

Nu när du har lärt dig hur du använder Pig med HDInsight använder du följande länkar för att utforska andra sätt att arbeta med Azure HDInsight.