Apache Pig

Apache Pig

Information
Entwickelt von Apache Software Foundation
Erste Version 11. September 2008
Letzte Version 0,17,0 (19. Juni 2017)
Anzahlung svn.apache.org/repos/asf/pig
Projekt-Status in Entwicklung
Geschrieben in Java
Betriebssystem Microsoft Windows , MacOS und Linux
Umgebung Java virtuelle Maschine
Lizenz Apache-Lizenz
Webseite https://pig.apache.org/

Pig ist eine High-Level-Plattform zum Erstellen von MapReduce- Programmen, die mit Hadoop verwendet werden . Die Sprache dieser Plattform heißt Pig Latin . Pig Latin abstrahiert von der Java- Programmiersprache MapReduce und wechselt zu einer höheren Abstraktionsebene, ähnlich der von SQL für RDBMS-Systeme. Pig Latin kann mithilfe von UDF (User Defined Functions) erweitert werden, die der Benutzer in Java , Python , JavaScript , Ruby oder Groovy schreiben und dann direkt in der Sprache verwenden kann.

Pig wurde ursprünglich in den 2006er Jahren bei Yahoo Research für Forscher entwickelt, die eine Ad-hoc-Lösung zum Erstellen und Ausführen von Jobs zur Kartenreduzierung für große Datenmengen wollten. 2007 wurde es an die Apache Software Foundation weitergegeben .

Beispiel

Hier ist ein Beispiel für ein " Word Count " -Programm in Pig Latin:

input_lines = LOAD '/tmp/my-copy-of-all-pages-on-internet' AS (line:chararray); -- Extract words from each line and put them into a pig bag -- datatype, then flatten the bag to get one word on each row words = FOREACH input_lines GENERATE FLATTEN(TOKENIZE(line)) AS word; -- filter out any words that are just white spaces filtered_words = FILTER words BY word MATCHES '\\w+'; -- create a group for each word word_groups = GROUP filtered_words BY word; -- count the entries in each group word_count = FOREACH word_groups GENERATE COUNT(filtered_words) AS count, group AS word; -- order the records by count ordered_word_count = ORDER word_count BY count DESC; STORE ordered_word_count INTO '/tmp/number-of-words-on-internet';

Das obige Programm generiert parallele ausführbare Aufgaben, die auf mehrere Computer in einem Hadoop-Cluster verteilt werden können, um die Anzahl der Wörter in einem Datensatz wie Webseiten im Internet zu zählen.

Schwein gegen SQL

Im Vergleich zu SQL ist Pig:

  1. Verwenden Sie faule Bewertung ,
  2. verwendet extrahieren, transformieren, laden (ETL),
  3. ist in der Lage, Daten jederzeit während einer Pipeline zu speichern ,
  4. erklärt den Ausführungsplan ,
  5. führt den unterteilten Workflow gemäß einer Grafik anstelle einer rein sequentiellen Ausführung aus.

Im Gegensatz dazu sind DBMS nach dem Laden von Daten erheblich schneller als das MapReduce-System, wobei das Laden von Daten in einem MapReduce-System viel schneller ist. Und relationale Datenbanksysteme bieten Out-of-the-box - Spalte Speicher, Druckdatenverarbeitung, die Indizierung für schnellere Daten Standort und Transaktionsebene Fehlertoleranz .

Pig Latin ist eine prozedurale Sprache und passt auf natürliche Weise in das Pipeline-Paradigma, während SQL eher deklarativ ist. In SQL können Benutzer angeben, dass Daten aus zwei Tabellen verknüpft werden sollen, nicht jedoch die zu verwendende Verknüpfungsimplementierung. "... Für viele Anwendungen verfügt die Abfrage-Engine nicht über ausreichende Kenntnisse der Daten oder über ausreichende Kenntnisse, um eine geeignete Verknüpfung anzugeben Algorithmus. ". Mit Pig Latin können Benutzer eine Implementierung oder Aspekte der Implementierung angeben, die beim Ausführen eines Skripts auf verschiedene Arten verwendet werden sollen. Dies liegt daran, dass die Programmierung von Pig Latin der Angabe eines Abfrageausführungsplans ähnelt, der es Programmierern erleichtert, den Ablauf ihrer Datenverarbeitungsaufgabe explizit zu steuern.

SQL orientiert sich an Abfragen, die ein einzelnes Ergebnis liefern. Es verwaltet auch Bäume, verfügt jedoch nicht über einen integrierten Mechanismus zum Aufteilen eines Datenverarbeitungsstroms und zum Anwenden der verschiedenen Operatoren auf jeden Teilstrom. Pig Latin beschreibt eher einen Acyclic Directed Graph (DAG) als eine Pipeline.

Pig Latin kann an jedem Punkt der Pipeline Benutzercode einfügen. Bei SQL müssen Daten zuerst in die Datenbank importiert werden, bevor ein Bereinigungs- und Transformationsprozess eingeleitet werden kann.

Siehe auch

  • Apache Hive
  • Sawzall - ähnliches Tool von Google
  • Hadoop
  • Kategorie: Hadoop-Ökosystem

Verweise

  1. https://pig.apache.org/releases.html
  2. "  https://pig.apache.org/releases.html  "
  3. "  Hadoop: Apache Pig  " (abgerufen am 2. September 2011 )
  4. "  Benutzerdefinierte Funktionen von Schwein  " (abgerufen am 3. Mai 2013 )
  5. "  Yahoo Blog: Schwein - Der Weg zu einer effizienten Hochsprache für Hadoop  " (abgerufen am 23. Mai 2015 )
  6. "  Schwein in Inkubation bei der Apache Software Foundation  " [ Archiv von3. Februar 2016] (abgerufen am 23. Mai 2015 )
  7. "  Die Apache Software Foundation  " (Zugriff auf 1 st November 2010 )
  8. "  Kommunikation des ACM: MapReduce und parallele DBMS: Freunde oder Feinde?  " [ Archiv von1 st Juli 2015] [PDF] (abgerufen am 23. Mai 2015 )
  9. (in) Alan Gates , Vergleichen von SQL und Pig Latin zum Erstellen von Datenverarbeitungs-Pipelines  " , 29. Januar 2010(abgerufen am 6. Februar 2017 )
  10. „  Yahoo Pig-Entwicklungsteam: Vergleich von Pig Latin und SQL zum Erstellen von Datenverarbeitungs-Pipelines  “ (abgerufen am 23. Mai 2015 )
  11. "  ACM SigMod 08: Schweinelatein: Eine nicht so fremde Sprache für die Datenverarbeitung  " [PDF] (abgerufen am 23. Mai 2015 )

Externe Links