w26M2
w26M2
w26M2
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
input_lines = LOAD ‚/tmp/my-copy-of-all-pages-on-internet‘ AS (line:chararray);<br />
words = FOREACH input_lines GENERATE FLATTEN(TOKENIZE(line)) AS word;<br />
filtered_words = FILTER words BY word MATCHES ‚\\w+‘;<br />
word_groups = GROUP filtered_words BY word;<br />
word_count = FOREACH word_groups GENERATE COUNT(filtered_words) AS count, group AS word;<br />
ordered_word_count = ORDER word_count BY count DESC;<br />
STORE ordered_word_count INTO ‚/tmp/number-of-words-on-internet‘;<br />
Abbildung 11: Pig-Latin-Illustration – Umsetzung des legendären Hadoop Wordcount-Beispiels<br />
geladen (LOAD), es werden Token und dann »richtige«<br />
Worte gebildet (TOKENIZE und FILTER), identische Worte<br />
werden zu Gruppen zusammengefasst und dann gezählt<br />
(GROUP und GENERATE COUNT) und schließlich werden<br />
die Worte nach der Häufigkeit des Vorkommens angeordnet<br />
(ORDER BY), sowie das Ergebnis in eine Datei geschrieben.<br />
Pig Latin-Skripte erinnern in ihrer Ausführlichkeit an<br />
die Formulierung in einer Pseudocode-Sprache. Die Verwendung<br />
von SQL-Sprachelementen erhöht die Lesbarkeit<br />
weiter. In Pig sind typische Datenflussoperationen, wie<br />
Join, Sort, Filter verfügbar – zusätzlich lassen sich Bibliotheken<br />
und benutzerdefinierte Funktionen einbinden.<br />
Die Produktivität, die beim Einsatz von Pig erreicht<br />
werden kann, ist naturgemäß davon abhängig, ob es Mitarbeiter<br />
gibt, die sich bereits gut mit Hadoop auskennen<br />
und die Pig Latin-Programmierung beherrschen. Trotz der<br />
Einfachheit dieser Spezialsprache bleibt die Gestaltung<br />
von Datentransformations-Prozessen hier eben eine Programmieraufgabe,<br />
die zudem in einer (derzeit noch) recht<br />
kargen Entwicklungsumgebung ausgeführt werden muss.<br />
Es stellen sich also die üblichen Fragen nach Lernaufwand,<br />
Codewartung und Dokumentation.<br />
Hive als deklaratives Hadoop »Data Warehouse«<br />
Einen ausreichend großen Hadoop-Cluster vorausgesetzt,<br />
können Pig-Jobs im Brute-Force-Stil große Datenmengen<br />
prinzipiell schnell verarbeiten. Pig führt dabei nur<br />
einfache regelbasierte Optimierungen des Datenflusses<br />
durch. Der Anwender ist im Wesentlichen selbst dafür<br />
verantwortlich, eine sinnvolle Verarbeitungsreihenfolge<br />
vorzugeben. In einem Hadoop-Cluster mit mehreren<br />
hundert Knoten wird das keine Rolle spielen. In einem<br />
Zehn-Knoten-Cluster kann ein ungünstig formuliertes Pig<br />
Latin-Skript aber zu frustrierenden Erlebnissen führen.<br />
Flexibilität ist eine ausgesprochene Stärke von Pig. Es<br />
werden zwar Datentypen verwendet, aber es wird nicht<br />
streng typisiert. Pig ist sehr nachsichtig gegenüber<br />
unpassenden Daten und versucht diese bestmöglich zu<br />
interpretieren. Außerdem kennt Pig einige recht allgemeine<br />
Datentypen, die es gestatten, die Daten zunächst<br />
einfach nur zu laden und dann die Struktur der Daten im<br />
Skript nach und nach zu verfeinern.<br />
Hive ist die zweite Hadoop-Technologie, die häufig<br />
im Zusammenhang mit Daten-Integrationsaufgaben<br />
genannt wird. Das Hive-Projekt wurde bei Facebook<br />
gestartet, um Anwendern eine relationale Sichtweise<br />
auf in Hadoop gespeicherte Daten zu ermöglichen. Die<br />
verwendete Abfragesprache HiveQL ist stark an SQL angelehnt,<br />
wenn auch vom Umfang her sehr deutlich reduziert<br />
und spezialisiert. In erster Linie wurde Hive entwickelt, um<br />
Anwendern zu gestatten, mit ihren gewohnten Abfrageund<br />
Business-Intelligence-Werkzeugen Auswertungen in<br />
Hadoop-Datenbeständen durchzuführen. Man spricht von<br />
einem Hive-Warehouse: Daten werden in der traditionellen<br />
Tabellenform präsentiert und können über standardisierte<br />
Datenbank-Schnittstellen, wie ODBC oder JDBC<br />
abgefragt werden. Aufgrund der teils sehr hohen Latenzzeiten<br />
bei der Ausführung von HiveQL-Abfragen sind die<br />
interaktiven Möglichkeiten allerdings eingeschränkt –<br />
dagegen stellt Hive stellt einen sehr praktischen Weg dar,<br />
Hadoop-Daten in einem traditionellen Data Warehouse<br />
verfügbar zu machen.<br />
50