Operators in Apache Pig: Part 1 - Relationele operatoren



Dit bericht beschrijft over operators in Apache Pig. Bekijk dit bericht voor Operators in Apache Pig: Part 1 - Relational Operators.

Dit bericht gaat over de operators in Apache Pig.Apache Pig stelt je ook in staat om complexe datatransformaties te schrijven zonder de kennis van Java, waardoor het echt belangrijk is voor het .Laten we even kijken wat Pig and Pig Latin is en de verschillende modi waarin ze kunnen worden bediend, voordat we verder gaan naar Operators.

Wat is Apache Pig?

Apache Pig is een procedurele taal op hoog niveau voor het opvragen van grote gegevenssets met Hadoop en het Map Reduce Platform. Het is een Java-pakket, waar de scripts kunnen worden uitgevoerd vanuit elke taalimplementatie die op de JVM draait. Dit wordt veel gebruikt in iteratieve processen.





Apache Pig vereenvoudigt het gebruik van Hadoop door SQL-achtige queries toe te staan ​​aan een gedistribueerde dataset en maakt het mogelijk om complexe taken te creëren om grote hoeveelheden data snel en effectief te verwerken. De beste eigenschap van Pig is dat het veel relationele functies ondersteunt, zoals Join, Group en Aggregate.

Ik weet dat Pig veel meer als een ETL-tool klinkt en dat het veel functies heeft die vaak voorkomen bij ETL-tools. Maar het voordeel van Pig boven ETL-tools is dat het op veel servers tegelijk kan draaien.



Wat is Apache Pig Latin?

Apache Pig maakt een eenvoudigere procedurele taal abstractie boven Map Reduce om een ​​meer Structured Query Language (SQL) -achtige interface bloot te leggen voor Hadoop-applicaties genaamd Apache Pig Latin, dus in plaats van een aparte Map Reduce-applicatie te schrijven, kun je een enkel script in Apache schrijven Varkenslatijn dat automatisch parallel loopt en over een cluster wordt verdeeld. In eenvoudige bewoordingen, Pig Latin, is een opeenvolging van eenvoudige uitspraken die een input nemen en een output produceren. De invoer- en uitvoergegevens zijn samengesteld uit tassen, kaarten, tuples en scalair.

Apache Pig-uitvoeringsmodi:

Apache Pig heeft twee uitvoeringsmodi:

  • Lokale modus

In ‘Lokale modus’ worden de brongegevens opgehaald uit de lokale directory op uw computersysteem. De MapReduce-modus kan worden gespecificeerd met de opdracht ‘pig –x local’.



Operators in Apache Pig - 1

  • MapReduce-modus:

Om Pig in MapReduce-modus uit te voeren, hebt u toegang nodig tot Hadoop-cluster en HDFS-installatie. De MapReduce-modus kan worden gespecificeerd met de opdracht ‘pig’.

Apache Pig-operators:

De Apache Pig Operators is een procedurele taal op hoog niveau voor het opvragen van grote datasets met Hadoop en het Map Reduce Platform. Een Pig Latin-instructie is een operator die een relatie als invoer aanneemt en een andere relatie als uitvoer produceert. Deze operators zijn de belangrijkste tools die Pig Latin biedt om met de gegevens te werken. Ze stellen je in staat om het te transformeren door te sorteren, groeperen, samenvoegen, projecteren en filteren.

Laten we twee bestanden maken om de opdrachten uit te voeren:

We hebben twee bestanden met de naam ‘eerste’ en ‘tweede’. Het eerste bestand bevat drie velden: gebruiker, url en id.

Het tweede bestand bevat twee velden: url & rating. Deze twee bestanden zijn CSV-bestanden.

De Apache Pig-operators kunnen worden geclassificeerd als: Relationeel en diagnostisch.

Relationele operators:

Relationele operators zijn de belangrijkste tools die Pig Latin biedt om met de gegevens te werken. Hiermee kunt u de gegevens transformeren door te sorteren, groeperen, samenvoegen, projecteren en filteren. Dit gedeelte behandelt de elementaire relationele operatoren.

LADEN:

LOAD-operator wordt gebruikt om gegevens van het bestandssysteem of HDFS-opslag in een Pig-relatie te laden.

In dit voorbeeld de Load-operator laadt gegevens uit het bestand ‘first’ om de relatie ‘loading1’ te vormen. De veldnamen zijn user, url, id.

VOOR ELK:

Deze operator genereert gegevenstransformaties op basis van gegevenskolommen. Het wordt gebruikt om velden toe te voegen aan of te verwijderen uit een relatie. Gebruik de FOREACH-GENERATE-bewerking om met gegevenskolommen te werken.

FOREACH Resultaat:

FILTER:

Deze operator selecteert tuples uit een relatie op basis van een voorwaarde.

In dit voorbeeld we filteren het record van ‘laden1’ wanneer de voorwaarde ‘id’ groter is dan 8.

FILTER Resultaat:

wat is hashmap en hashtabel in java

WORD LID:

De JOIN-operator wordt gebruikt om een ​​innerlijke, equijoin-join uit te voeren van twee of meer relaties op basis van gemeenschappelijke veldwaarden. De JOIN-operator voert altijd een inner join uit. Inner joins negeren null-sleutels, dus het is logisch om ze uit te filteren vóór de join.

In dit voorbeeld voeg de twee relaties samen op basis van de kolom ‘url’ van ‘loading1’ en ‘loading2’.

JOIN Resultaat:

BESTEL DOOR:

Order By wordt gebruikt om een ​​relatie te sorteren op basis van een of meer velden. U kunt sorteren in oplopende of aflopende volgorde met behulp van ASC- en DESC-sleutelwoorden.

In het onderstaande voorbeeld sorteren we gegevens in loading2 in oplopende volgorde in het beoordelingsveld.

BESTEL OP Resultaat :

DISTINCT:

Distinct verwijdert dubbele tupels in een relatie. Laten we een invoerbestand nemen zoals hieronder, dat heeft amr, onzin, 8 en amr, mijn blog, 10 tweemaal in het bestand. Wanneer we onderscheid toepassen op de gegevens in dit bestand, worden dubbele vermeldingen verwijderd.

DISTINCT Resultaat:

OP TE SLAAN:

Store wordt gebruikt om resultaten op te slaan in het bestandssysteem.

Hier zijn we aan het sparen laden 3 gegevens in een bestand met de naam opbergen op HDFS.

WINKEL Resultaat:

GROEP:

De GROUP-operator groepeert de tupels met dezelfde groepstoets (sleutelveld). Het sleutelveld is een tupel als de groepssleutel meer dan één veld heeft, anders is het hetzelfde type als dat van de groepssleutel. Het resultaat van een GROUP-bewerking is een relatie die één tupel per groep bevat.

In dit voorbeeld groep th

De relatie ‘loading1’ op kolom-url.

GROEP Resultaat:

COGROUP:

COGROUP is hetzelfde als GROUP-operator. Voor de leesbaarheid gebruiken programmeurs meestal GROUP als er maar één relatie bij betrokken is en COGROUP als er meerdere relaties bij betrokken zijn.

In dit voorbeeld groepeert u het veld ‘loading1’ en ‘loading2’ op URL in beide relaties.

COGROUP Resultaat:

KRUIS:

De CROSS-operator wordt gebruikt om het cross-product (Cartesiaans product) van twee of meer relaties te berekenen.

Crossproduct toepassen op loading1 en loading2.

hoe te converteren naar binair in python

CROSS-resultaat:

LIMIET:

LIMIT-operator wordt gebruikt om het aantal output-tuples te beperken. Als het opgegeven aantal output-tuples gelijk is aan of groter is dan het aantal tuples in de relatie, zal de output alle tuples in de relatie bevatten.

LIMIT Resultaat:

SPLIT:

De SPLIT-operator wordt gebruikt om de inhoud van een relatie te verdelen in twee of meer relaties op basis van een bepaalde uitdrukking. Afhankelijk van de voorwaarden vermeld in de uitdrukking.

Splits de loading2 in twee relaties x en y. x-relatie gecreëerd door loading2 bevat de velden waarvan de beoordeling groter is dan 8 en y-relatie bevat velden met de beoordeling kleiner dan of gelijk aan 8.

Heeft u een vraag voor ons? Vermeld ze in het opmerkingengedeelte en we nemen contact met u op.

Gerelateerde berichten:

Operators in Apache Pig - Diagnostische operators

Stappen om UDF te maken in Apache Pig