22.01.2015 Aufrufe

w26M2

w26M2

w26M2

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!