Apache Pig. Seminararbeit Software Systems Engineering - WS 2012 / 2013 Sebastian Walther - Studiengang Informatik SSE Master Universität zu Lübeck

Größe: px
Ab Seite anzeigen:

Download "Apache Pig. Seminararbeit Software Systems Engineering - WS 2012 / 2013 Sebastian Walther - Studiengang Informatik SSE Master Universität zu Lübeck"

Transkript

1 1 Apache Pig Seminararbeit Software Systems Engineering - WS 2012 / 2013 Sebastian Walther - Studiengang Informatik SSE Master Universität zu Lübeck Zusammenfassung Diese Seminararbeit soll einen einführenden Überblick der Apache Pig Plattform sowie deren Datenflussanfragesprache Pig Latin vermitteln. Dazu wird im Einführungskapitel auf die grundlegenden Technologien eingegangen welche im Zusammenhang mit Apache Pig stehen. Ebenfalls wird eine Abgrenzung zu der Anfragesprache SQL angegeben. Darauf folgernd werden die Unterschiede zu einer reinen MapReduce Lösung beschrieben. Im Praxisteil wird Pig s Datenmodell sowie die grundlegenden Sprachelemente von Pig Latin erläutert. Darauf folgern die Themen Testen, Performancesteigerung und Benchmarking von Pig Latin Skripten. Anschließend werden die wichtigsten Punkte in der Zusammenfassung aufgeführt. Diese Seminararbeit lehnt sich an das Referenzbuch Programming Pig[1] von Alan Gates an. Abbildung 1: Subprojekte von Hadoop [3] Index Terms Apache Pig, Hadoop, MapReduce, HDFS, Pig Latin I. EINFÜHRUNG Bei Apache Pig handelt es sich um eine in Java implementierte Plattform, mit der es möglich ist, eine große Anzahl von Datensätze zu analysieren und zu verarbeiten. Apache Pig beinhaltet eine eigene Anfragesprache Pig Latin um Datensätze zu lokalisieren, verarbeiten, aufzubereiten und abzulegen. A. Hadoop Apache Hadoop ist ein Framework welches die Möglichkeit bietet mehrere Tausend Rechner bezüglich Speicher- und Rechenkapazität zu einer logischen Einheit zusammenzufassen. Dabei ist das Framework auf Hochverfügbarkeit ausgelegt, indem es Fehler bereits auf der Anwendungsschicht erkennt und behebt [2]. Hadoop lässt sich in mehrere zusammenhängende Subprojekte, wie in Abb.1 darstellen, unterteilen. Zwei dieser Subprojekte werden von Pig verwendet. Zum einen nutzt Pig das verteilte Dateisystem HDFS für die Datenverwaltung und zum anderen wird das Verarbeitungssystem MapReduce eingesetzt um Anfragen auf Daten verteilt durchzuführen. Im Folgenden wird auf diese zwei Subprojekte eingegangen. 1) MapReduce: Das MapReduce Verfahren dient zur verteilten Verarbeitung von Datensätzen auf einem Cluster von Rechnern. Das Verfahren arbeitet in den zwei grundlegenden Phasen Map und Reduce sowie in einer optionalen Phase Combine. Das in Abb.2 dargestellt MapReduce-Beispiel aus [1] soll eine Häufigkeitsanalyse von Wörten eines Textes durchführen. Die drei Phasen werden anhand des Beispiels im Folgenden kurz erläutert. Abbildung 2: MapReduce Beispiel [1] Map-Phase: Innerhalb der Map-Phase wird eine zuvor festgelegte Funktion jeweils auf eine disjunkte Teilmenge der zu verarbeitenden Daten angewandt. Diese Teilmengen werden jeweils von einem einzelnen Rechner des Clusters bearbeitet, sodass eine verteilte und parallele Ausführung der Funktion ermöglicht wird. Im angegebenen Beispiel legt die Map-Funktion für jedes Wort ein Tupel der Form (Wort, Anzahl) an. Combine-Phase: Nach der Map-Phase kann optional die Combine-Phase erfolgen. Dabei werden gleiche Daten einer Ergebnisliste zusammengefügt um die Netzwerklast signifikant zu reduzieren. Diese Phase ist nicht in allen Anwendungsszenarien sinnvoll, kann aber z.b. bei der Häufigkeitsanalyse aus dem obigen Beispiel seine Berechtigung haben. Hierbei werden Tupel zusammengefasst die den gleichen Wert für Wort haben. Die Anzahl wird dann addiert. Aus (Mary,1) und (Mary,1) wird dann z.b. (Mary,2).

2 2 Reduce-Phase: In dieser letzten Phase wird auf den Ergebnislisten der vorherigen Phase, jeweils die Reduce- Funktion aufgerufen. Diese reduziert das Datenaufkommen, indem die Funktion beispielsweise nicht benötigte Daten herausfiltert oder Daten aus mehreren Ergebnislisten zusammenfasst. Auf das obige Beispiel bezogen wird innerhalb einer Reduce-Funktion jeweils auf Ergebnislisten mehrerer Map-Instanzen zugegriffen. Der Unterscheid zu der Combine-Phase ist, das die Combine-Funktion jeweils auf die Ergebnisliste einer Map-Instanz zugreift. Die Combine- und Reduce-Phase müssen dabei nicht die gleiche Funktionalität bieten. 2) HDFS: HDFS ist ein verteiltes Dateisystem, welches Dateien auf einen Cluster von Rechnen repliziert speichert und verwaltet. Dabei wird mit einem strombasierten Zugriffsverfahren gearbeitet. Ein HDFS besteht aus mehreren Workern (DataNodes), auf den die Daten abgelegt werden, sowie aus einem Koordinator (NameNode) welcher für die Haltung der Metadaten des Dateisystems zuständig ist. Die Metadaten bestehen dabei größtenteils aus Datei- und Verzeichnisinformationen. Durch die replizierte Speicherung bietet HDFS eine gewisse Sicherheit gegenüber ausfallenden DataNodes. Der NameNode hingegen ist der Single-Point-of-Failure des Dateisystems, wodurch die Verfügbarkeit beeinträchtigt werden kann. Es besteht zwar die Möglichkeit einen Backup-NameNode einzurichten jedoch muss dieser beim Ausfall manuell eingebunden werden [3]. B. Pig Latin Mithilfe der Datenflusssprache Pig Latin lässt sich eine Beschreibung angeben, wie Datensätze aus ein oder mehreren verschiedener Quellen gelesen werden, wie diese bearbeitet und dann wieder in ein oder mehrere Zielsysteme abgelegt werden. Quell- und Zielsystem können z.b. Hadoop Cluster oder lokale Dateien sein. Mit Pig Latin lassen sich ebenfalls standardisierte Operationen auf Daten wie zum Beispiel Joins, Sortierungen, Filteroperationen etc. ausführen. Bei der Entwicklung von Pig Latin wurde der Fokus auf folgende Eigenschaften gelegt [4]: Einfache Programmierung Erweiterbarkeit Anfrageoptimierungsmöglichkeiten Durch diese Eigenschaften ist es möglich eine komplexe sowie effiziente Verarbeitung auf großen Datensätzen mit wenig Aufwand zu realisieren.. 1) Abgrenzung von SQL: Bei SQL handelt es sich um eine Anfragesprache, mit der sich Datenbankanfragen formulieren lassen. Wird mit dem Anfrageergebnis weiter gearbeitet wird die Anfrage schnell unübersichtlich, da temporäre Tabellen erstellt werden müssen. Pig Latin hingegen ist eine datenflussbasierte Sprache in der Datenströme gelesen, verarbeitet und ausgegeben werden ohne das eine Verwendung von Subqueries nötig ist. Dabei gilt zu bedenken, dass beide Sprachen für verschiedene Umgebungen entwickelt wurden. SQL zeigt seine Stärken, wenn es um Anfragen an konsistente relationale Datenbankmanagementsysteme geht. Die Daten müssen dabei einem Schema zugrunde liegen. Pig Latin hingegen ist dafür ausgelegt auf einem Hadoop Cluster zu arbeiten, wo ein Schema unbekannt oder inkonsistent sein kann [1]. C. Unterschiede zu MapReduce Apache Pig erweitert das MapReduce Verfahren dementsprechend, dass eine einfachere, individuelle Umgebung bereitstellt wird. Dies bedeutet, dass bestimmte Funktionalitäten mit Apache Pig deutlich schneller zu implementieren sind als die Implementierung derselben Funktionalität mittels MapReduce und Java. Pig stellt diesbezüglich einige komplexe Implementierungen für Standartoperationen bereit. Dazukommend kann es durchaus vorkommen, dass die Daten im MapReduce-Verfahren nicht gleichverteilt an den einzelnen Ressourcen im Hadoop Cluster vorliegen. Dies kann dazu führen, dass einige Ressourcen deutlich mehr belastet werden als andere. Dies bedeutet wiederrum, dass die Laufzeit sich entsprechend erhöht. Apache Pig kann in einigen Fällen eine Gleichverteilung durch die Operatoren Join und Order-by vornehmen. Ein Weiterer Unterschied besteht darin, das MapReduce kein Dateitypensystem hat. Dadurch erhält der Benutzer zwar mehr Freiheiten, dennoch wird ihm die Möglichkeit verwehrt, das Codeanalysierungen automatisch erfolgen können. Pig ist in der Lage den Code sowie den Datenfluss zu analysieren und so den Benutzer früh auf Fehler hinzuweisen. Liegen jedoch extrem hohe Performanceanforderungen vor sollte auf eine reine MapReduce Lösung zurückgegriffen werden[1]. D. Anwendungsumgebungen Apache Pig lässt sich in verschiedenen Anwendungsumgebungen ausführen [1]. Die einzelnen Umgebungen werden im Folgenden kurz erläutert. 1) Lokaler Modus: Im lokalen Modus kann Apache Pig auf einen einzelnen Rechner ausgeführt werden. Dazu werden Daten aus einer oder mehreren bestehenden Dateien gelesen, verarbeitet und in eine oder mehrere lokale Dateien geschrieben. Der lokale Modus eignet sich in erster Linie dazu, ein implementiertes Pig Latin Skript zu debuggen oder einen Prototypen auf kleinen Datenmengen zu testen, bevor dieses im Hadopp Cluster auf großen Datenmengen angewandt wird. 2) Pig im Hadoop Cluster: Die gängigste Ausführungsvariante für Pig Latin Skripte ist das Hadoop Cluster. Hierzu werden die auszuführenden Skripte von einem Rechner aus in das vorhandene Hadoop Cluster importiert. Dieser Rechner muss Zugriff auf das Cluster haben. Ebenfalls muss der Name des Hadoop Koordinators (NameNode) und der MapReduce-Koordinator (JobTracker) bekannt gemacht werden. 3) Pig in der Cloud: Eine weitere Möglichkeit Pig zu nutzen ist die Ausführung in der Cloud. Hierzu kann zum Beispiel Amazons Web-Service Amazon Elastic MapReduce (EMR) verwendet werden. EMR stellt ein Hadoop Cluster mit einer gewünschten Kapazität bereit um datenintensive Berechnungen parallel durchzuführen. Die häufigsten Einsatzgebiete sind unter anderen Webindizierung, Data-Mining, Protokolldatenanalyse, maschinelles Lernen sowie wissenschaftliche Simulationen [5].

3 3 II. APACHE PIG IN DER PRAXIS Im Nachfolgenden Teil wird näher auf Apache Pig eingegangen. Dazu wird als erstes das zugrundeliegende Datenmodell von Apache Pig vorgestellt. Im Anschluss werden Beispielhaft einige Sprachelemente von Pig Latin vorgestellt. Diesbezüglich wird darauf eingegangen wie Daten eingelesen verarbeitet und ausgeschrieben werden. Das darauf folgende Thema beschäftigt sich mit der Verifikation von Pig Latin Skripten und zeigt die grundlegenden Testmöglichkeiten. Ein weiterer Punkt dieses Kapitels deutet an, worauf bei der Entwicklung in puncto Performance geachtet werden sollte. Zum Abschluss werden Benchmarks zu Pig betrachtet. A. Pig s Datenmodel In Apache Pig existieren verschiedene Datentypen, welche sich in zwei Typen Kategorisieren lassen. Einfache Datentypen (Scalar Types) Komplexe Datentypen (Complex Types) 1) Einfache Datentypen: Einfache Datentypen in Pig sind Typen, die auch in den meisten Programmiersprachen vorkommen. Folgende sechs einfache Datentypen stehen zur Verfügung [6]. int: Vorzeichenbehaftete 32-Bit Integerzahl long: Vorzeichenbehaftete 64-Bit Integerzahl float: 32-Bit Fließkommazahl double: 64-Bit Fließkommazahl chararray: char Array (String) im Unicode UTF-8 Format Bytearray: Ein Array mit Bytes 2) Komplexe Datentypen: Komplexe Datentypen stellen in Apache Pig Container dar. Diese können wiederrum komplexe oder einfache Datentypen enthalten. Folgende drei Containertypen stehen zur Verfügung [6]. Map: Eine Map stellt in Pig eine Menge von Key Value paaren als Bytearray dar, wobei der Schlüssel die Position angibt. Der Wert kann jeweils ein beliebiger Pig Datentyp sein. Tuple: Ein Tupel ist eine geordnete Menge mit einer festen Anzahl von Werten. Übertragen auf Datenbanken könnte ein Tupel eine Zeile in einer Tabelle darstellen. Die einzelnen Positionen der geordneten Menge lassen sich namentlich referenzieren, sodass eine einfache Handhabung möglich ist. Ebenfalls ist es möglich ein Tupelschema zu definieren Bag: Dieser Datentyp ist eine ungeordnete Menge von Tupeln. Bags lassen sich wie Tupel ebenfalls in einen Schema definieren, sodass alle Tupel innerhalb des Bags genauer beschrieben werden können. B. User Defined Funktions (UDFs) Apache Pig ermöglicht es innerhalb des Pig Latin Skript benutzerdefinierte Funktionen (UDFs) zu nutzen. Pig stellt eine Reihe von eingebauten Funktionen für die Nutzung mathematischer und datentypbasierter Operationen bereit [7]. Des Weiteren können eigene UDFs in Java implementiert und in Latin Pig genutzt werden [8]. C. Die Sprachelemente von Pig Latin In den folgenden Abschnitten werden die grundlegenden Sprachelemente von Pig Latin vorgestellt um die grundlegende Struktur zu verdeutlichen. Eine Auflistung aller vorhandenen Sprachelemente ist der Apache Pig Dokumentation [9] zu entnehmen. Zu bedenken sei, dass Variablennamen und UDF-Funktionen Case-sensitive sind. Schlüsselwörter hingegen sind nicht Case-sensitiv. Zur Verdeutlichung werden Schlüsselwörter in den nachfolgenden Beispielen groß geschrieben. 1) Kommentare: Kommentare können in Pig Latin gangzeilig oder über mehrere Zeilen angelegt werden. Zwei Operatoren stehen diesbezüglich bereit. Einzeiliger Kommentar (- - Kommentar) im SQL-Stil. Mehrzeiliger Kommentar (/ * Kommentar * /) im Java- Stil. 2) Daten lesen / schreiben: Für das Lesen von Daten aus einer Datei und für das Schreiben von Daten in eine Datei kommen bei Apache Pig verschiedene load und store Funktionen zum Einsatz, welche jeweils für einen bestimmten Bereich geeignet sind. So lässt sich zum Beispiel die Load/Store-Funktion PigStoragenutzen um mit Daten aus einem Hadoop-Cluster zu arbeiten. Ein weiteres Beispiel ist die Funktion HBaseStorage[10], welche Daten aus einer Apache HBase [11] lädt. An dieser Stelle sei noch gesagt, das eine individuelle Nutzung durch die Implementierung eigener Load- und Storefunktionen möglich ist [12]. Um aus einer Datei Daten zu importieren wird der Befehl load benötigt. a = LOAD /data/datainputfile ; Das Beispiel lädt den Inhalt der Datei datainputfileäus dem Ordner dataëin und hinterlegt die Daten in die Variable ä. Dabei müssen die Daten in diesen Fall Tab-separiert vorliegen. Andere Separatoren können durch explizites Angeben der Standard-Loadfunktion PigStorage() innerhalb der Übergabeparameter spezifiziert werden. Das folgende Beispiel liest Daten ein, die durch ein Komma getrennt sind. a = LOAD /data/datainputfile USING PigStorage(, ) ; Ebenfalls lassen sich Schemata mittels des AS angeben. Diese vereinfachen den späteren Umgang mit den Daten indem sie eine Referenz auf die jeweiligen Felder des Datensatzes bereitstellen. users = LOAD /data/userlist AS (loginname, , birthday); Für das Exportieren von Daten in eine Datei wird der Befehl ßtorebenötigt. STORE users INTO /data/dataoutputfile USING PigStorage(, ); Die Angabe der Store-Funktion ist hier ebenfalls optional und kann äquivalent durch eine beliebige andere Store- Funktion ersetzt werden.

4 4 3) Relationale Operationen: Zwischen dem Lesen und Schreiben von Daten kommen relationale Operationen zum Einsatz. Diese bietet verschiedenste Möglichkeiten Daten umzuformen oder zu vereinigen. Im Folgenden werden beispielhaft einige essentielle Operation vorgestellt. Für weitere Informationen diesbezüglich und eine Auflistung aller vorhandenen Operationen sei auf den entsprechenden Teil der Dokumentation [13] verwiesen. FOREACH: Der foreach-befehl ermöglicht es alle Datensätze, die in einer Variable hinterlegt sind, zu durchlaufen um gewisse datenbasierte Operationen oder UDFs auf einem Cluster von Daten gleicher Struktur anzuwenden. Das nachfolgende Beispiel wählt aus den Datensätzen der Variable users jeweils die ersten beiden Felder aus und legt das Ergebnis in result ab. users = LOAD /data/userlist AS (loginname, , birthday); result = FOREACH users GENERATE loginname, ; FILTER: Der Filteroperator ist in de Lage ein bestimmtes Datum aus einem Satz von Datensäten nach bestimmten Regeln zu Filtern. Diese Regeln können vom Benutzer angegeben werden und können aus Vergleichen oder regulären Ausdrücken bestehen. users = LOAD /data/userlist AS (loginname, ); startswithm = FILTER users BY loginname matches M.* ; Das angegebene Beispiel wählt aus den Datensätzen in users alle heraus, bei denen der Loginname mit M beginnt und legt diese in der Variable startswithm ab. GROUP: Der Group-Operation gruppiert Datensätze nach einen definierten Datum. Die Gruppierten Daten werden dann jeweils in einem Container vom Typ Bag abgelegt. Group unterscheidet sich vom SQL Befehl GROUP-BY dahingehend das bei Pig keine Aggregationsfunktion in Verbindung zu GROUP stehen muss. Das heißt, dass die Daten nicht reduziert werden müssen. Das nachfolgende Beispiel gruppiert die Kundenliste aus der Variable customers nach dem Wert zipcode und legt diese in result ab. Das Ergebnis ist eine Bag. Diese Bag enthält wiederum Bags welche jeweils Daten mit dem gleichen Wert für zipcode haben. customers = LOAD /data/customerlist AS (name, zipcode,...); result = GROUP customers BY zipcode; D. Testen Apache Pig bietet seit der Version 0.8 das Framework PigUnit [14] zum Testen von Pig Latin Skripten an. Das Framework integriert Testmöglichkeiten für Pig Latin-Skripte in JUnit. Neben dem regulären Testen kann mittels PigUnit auch sichergestellt werden, das nach Änderungen an UDFs oder Versionsänderungen von Hadoop bzw. Pig die gewünschte Funktionalität nach wie vor gegeben ist. Für die nachfolgenden Beispiele aus [1] wird folgendes Pig Latin-Skript [1] angenommen, welches einen Durchschnittswert berechnet und in der Variable ävgdivïnnerhalb des Skripts ablegt. --pigunit.pig divs = LOAD NYSE_dividends AS (exchange, symbol, date, dividends); grpd = GROUP divs ALL avgdiv = FOREACH grpd GENERATE AVG(divs.dividends); STORE avgdiv INTO average_dividend ; Das folgende Beispiel zeigt einen Test für das Skript aus der Datei pigunit.pig. Im ersten Schritt des Tests wird eine Variable vom Typ PigTest[15] angelegt, wobei im Konstruktor die Skriptdatei übergeben wird. Als nächstes wird das gewünschte Ergebnis unter Angabe des richtigen Datentyps angegeben. Die Funktion assertoutput() der Klasse PigTestprüft im Anschluss ob das gewünschte Ergebnis mit dem berechneten Ergebnis übereinstimmt. Der String ävgdivreferenziert dabei auf die gleichnamige Variable im Skript. public class PigUnitExample { private PigTest test; private static Cluster cluster; public void testdatainfile() throws ParseException, IOException { } test = new PigTest("../pigunit.pig") ; String[] output = { " ( )" }; test.assertoutput("avgdiv", output); Dadurch, dass Variablenwerte getestet werden, bietet die Klasse PigTest die Möglichkeit Zwischenergebnisse im Skript zu validieren um nach Fehlerquellen zu suchen. Statt externe Daten zu verwenden können die Testdaten auch innerhalb des Tests angegeben werden. Dies ist sinnvoll wenn die realen Daten zum Testzeitpunkt nicht vorliegen oder zu groß sind. Die Angabe der Testdaten erfolgt dann innerhalb der Testmethode. String[] input = { "NYSE\tCPO\t \t0.14", "NYSE\tCPO\t \t0.14", "NYSE\tCCS\t \t0.414", "NYSE\tCCS\t \t0.414", "NYSE\tCIF\t \t0.029", }; Damit die angegebenen Testdaten verwendet werden können, müssen diese in der Methode assertoutput() angegeben werden. test.assertoutput("divs", input, "avgdiv", output); Durch Angabe der ersten beiden Parameter wird die Funktion load für die Skriptvariable divs überschrieben, sodass der Inhalt des String-Arrays input als Eingabestrom verwendet wird. Auf die gleiche Weise lässt ich das zu verwendende Pig Latin-Skript innerhalb des Tests angeben. Dazu wird wiederrum ein Stringarray mit den Inhalten des Skripts erstellt. String[] script = { "divs = LOAD../../..data/NYSE_dividends AS (exchange, symbol,...,);", "grpd = GROUP divs ALL;", "avgdiv = FOREACH grpd GENERATE AVG(divs. dividends);", "STORE avgdiv INTO average_dividends ;". };

5 5 Durch Angabe des Stringarrays als Übergabeparameter für das Objekt vom Typ PigTest lässt sich das erstellte Skript verwenden. test = new PigTest(script); E. Performance Wie auch in anderen Sprachen ist die Performance des erstellten Codes von einigen Faktoren abhängig, welche es zu beachten gilt. So auch bei Pig. Für die Implementierung eines performanten Pig Latin-Skripts stellt Apache einige Regeln zur Verfügung [16]. Um einen Eindruck diesbezüglich zu vermitteln werden im Folgenden einige dieser Regeln erläutert. 1) Der richtige Datentyp: Pig schreibt keine explizite Datentypdefinition vor. Dennoch ist es aus Performancegründen an einigen Stellen sinnvoll den passenden Datentyp explizit mit anzugeben. Liegen Daten zum Beispiel typisiert in einen Bytearray vor werden diese für numerische Operationen automatisch als Doublewerte behandelt. Bei folgender beispielhafter UDF werden jedoch Werte des Typs Integer summiert. long SUM({(int)} input) In diesem Beispiel entstehen, ohne explizite Datentypeingabe, Performancekosten die leicht hätten eingespart werden können. 2) Auswahl der join-operation: Wie auch in anderen Bereichen der Anfrageoptimierung kann sich die Auswahl des passenden Join-Operation signifikant auf die Performance auswirken. Abb.3 gibt einen ersten Leitfaden für die Auswahl von Join-Operationen an die Hand. Dabei ist Faktoren wie Speicherplatz und Sortierungsgegebenheiten von Bedeutung. Zeitpunkt Geschwindigkeitsfaktor Testmethode ,97 PigMix ,83 PigMix ,68 PigMix ,53 PigMix ,04 PigMix ,09 PigMix ,15 PigMix ,16 PigMix2 Tabelle I: Entwicklung von Pig hinsichtlich der Laufzeiten werden um irrelevante Teildaten zeitnah aus den Datenströmen entfernen zu lassen. F. Benchmarks zu Apache Pig PigMix und PigMix2 sind jeweils eine Menge von Queries, welche eingesetzt werden um auf den neusten Releaseversionen Benchmarks durchzuführen. PigMix2 beinhaltet neben zusätzlichen Queries alle Queries von PigMix. Das Ziel von dabei ist es die Skalierbarkeit sowie die benötigte Zeit für die Ausführung verschiedener Queries zwischen Apache Pig und einer reinen MapReduce Implementierung in Java zu vergleichen. Die auf Hadoop basierte Testumgebung umfasste dabei 26 Worker und ein NameNode auf dem ebenfalls der JobTracker läuft. Als grundlegendes Ergebnis zeigte sich, dass eine reine Java Implementierung nach wie vor in den meisten Fällen die schneller Variante ist. Dazu sei zu bedenken, dass der Entwicklungsaufwand hier jedoch wesentlich höher ausfällt. Die zeitliche Tendenz für die einzelnen Releases zeigt, dass sich die Laufzeiten von Pig gegenüber der reinen Java-Implementierung deutlich verbessert haben, sodass sich die Laufzeiten an die reinen Java-Implementierungslaufzeiten angenähert haben. Tabelle I zeigt den mittleren Vergleich über die einzelnen Releases von Pig im Vergleich zu einer reinen Java- Implementierung. Der Faktor gibt dabei den Durschnitt aller Quotienten des Verhältnisses Java / Pig an. Tabelle II zeigt die Laufzeiten verschiedener Operationen und das Verhältnis zwischen Pig und einer Java-Implementierung. Für weitere Informationen bezüglich PigMix sei auf die offizielle Website von PigMix verwiesen [17]. Abbildung 3: Auswahl des optimalen Join-Operators [1] 3) Filter und Projektion: Pig nutzt intern einen logischen Optimierer der dafür zuständig ist Filter und Projektionen im Skript möglichst früh auszuführen. Dennoch sollte diese beiden Operatoren so früh und oft wie möglich eingesetzt III. ZUSAMMENFASSUNG Mit dem Subsystem Apache Pig aus dem Hadoop Framework lassen sich viele Daten schnell, einfach und zuverlässig abfragen. Pig nutzt zwei weiter Subsysteme des Hadoop Framework. Zum Einen das verteilte Dateisystem HDFS und zum Anderen Hadoops MapReduce-Verfahren mit dem Anfragen verteilt ausgeführt werden können. Die Daten müssen dabei nicht in einem geordneten Schema, wie in relationalen Datenbanken, vorliegen. Mit Hilfe der Anfragesprache Pig Latin lässt sich mit vergleichsmäßig wenig Aufwand eine komplexe Datenbankanfrage modellieren. Dazu werden immer die drei Schritte einlesen, verarbeiten und ausgeben berücksichtigt. Innerhalb des Schrittes Daten verarbeiten lassen sich benutzerdefinierte

6 6 Querie Java Pig Verhältnis Java/Pig L1 explode L2 fr join L3 join L4 distinct agg L5 anti-join L6 large group by key L7 nested split L8 group all L9 order by 1 field L10 order by multi. fields L11 distinct + union L12 multi-store L13 outer join L14 merge join L15 multi. diff. aggregates L16 accumulative mode L17 wide key group [10] [Online]. Available: backend/hadoop/hbase/hbasestorage.html [11] [Online]. Available: [12] [Online]. Available: 2FStore+Functions [13] [Online]. Available: Relational+Operators [14] [Online]. Available: [15] [Online]. Available: ]http://javasourcecode.org/html/open-source/pig/ pig-0.8.1/org/apache/pig/pigunit/pigtest.html [16] [Online]. Available: optimization-rules [17] [Online]. Available: https://cwiki.apache.org/confluence/display/pig/ PigMix Tabelle II: Ausführungszeiten von PigMix2 Funktionen (UDFs) aufrufen. Eine Reihe mathematischer und datentypoperativer UDFs stehen hierbei zur Verfügung. Ebenso lassen sich eigene UDFs in Java definieren und im Pig Latin verwenden. Durch das Datenmodell von Pig ist es möglich eine Codeanalyse automatisch vornehmen zu lassen. Dies bedeutet, dass z.b. geprüft wird ob die verwendeten Datentypen an den jeweiligen Positionen sinnvoll sind. Jedoch ist es dem Anwender überlassen, ob dieser Angaben zu den Datentypen innerhalb des Skripts macht. Neben der automatischen Codeanalyse bietet es sich an zusätzlich PigUnit zu verwenden. PigUnit bietet die Möglichkeit Pig Latin-Skripte zu testen. Dabei setzt PigUnit auf JUnit auf, wodurch eine komfortable Testumgebung zur Verfügung steht. Damit die Performance von Pig erhalten bleibt, sind einige Dinge bei der Implementierung der Skripte zu beachten. Die meisten davon beziehen sich auf Datenoperationen und lassen sich ebenfalls im Anfrageoptimierungsbereich wiederfinden. Apache Pig bietet dem Benutzer eine einfach zu verstehende Datenflusssprache Pig Latin. Zwar können die Anfragen auch ohne Apache Pig modeliert weden, jedoch beansprucht dies in einigen Fällen deutlich mehr Aufwand. PigMix Benchmarks haben gezeigt, das die Ausführungsgeschwindigkeit, seit dem ersten Release von Pig, deutlich gestiegen ist. Jedoch ist die durchschnittliche Ausführungsgeschwindigkeit von Pig Skripten gegenüber einer reinen Java Implementierung immer noch leicht höher. LITERATUR [1] A. Gates, Programming Pig, first edition ed. OREILLY, [2] [Online]. Available: [3] T. White, Hadoop: The Definitive Guide, F. Edition, Ed. OREILLY, [4] [Online]. Available: [5] [Online]. Available: [6] [Online]. Available: ref2.html# Data+Types+and+More [7] A. Gates, Programming Pig, first edition ed. OREILLY, 2011, p. Appendix A. [Online]. Available: ]http://pig.apache.org/docs/r0.9.1/udf. html [8] [Online]. Available: [9] [Online]. Available:

APACHE PIG SEMINARARBEIT SSE - WS12/13 SEBASTIAN WALTHER

APACHE PIG SEMINARARBEIT SSE - WS12/13 SEBASTIAN WALTHER APACHE PIG SEMINARARBEIT SSE - WS12/13 SEBASTIAN WALTHER INHALT Das Hadoop Framework Hadoop s Distributed File System (HDFS) MapReduce Apache Pig Was ist Apache Pig & Pig Latin Anwendungsumgebungen Unterschied

Mehr

Hadoop. Simon Prewo. Simon Prewo

Hadoop. Simon Prewo. Simon Prewo Hadoop Simon Prewo Simon Prewo 1 Warum Hadoop? SQL: DB2, Oracle Hadoop? Innerhalb der letzten zwei Jahre hat sich die Datenmenge ca. verzehnfacht Die Klassiker wie DB2, Oracle usw. sind anders konzeptioniert

Mehr

Neue Ansätze der Softwarequalitätssicherung

Neue Ansätze der Softwarequalitätssicherung Neue Ansätze der Softwarequalitätssicherung Googles MapReduce-Framework für verteilte Berechnungen am Beispiel von Apache Hadoop Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik

Mehr

Einführung in Hadoop & MapReduce. Dr. Kathrin Spreyer Big Data Engineer

Einführung in Hadoop & MapReduce. Dr. Kathrin Spreyer Big Data Engineer Einführung in Hadoop & MapReduce Dr. Kathrin Spreyer Big Data Engineer München, 19.06.2013 Agenda Einleitung 1. HDFS 2. MapReduce 3. APIs 4. Hive & Pig 5. Mahout Tools aus Hadoop-Ökosystem 6. HBase 2 Worum

Mehr

Hadoop. Eine Open-Source-Implementierung von MapReduce und BigTable. von Philipp Kemkes

Hadoop. Eine Open-Source-Implementierung von MapReduce und BigTable. von Philipp Kemkes Hadoop Eine Open-Source-Implementierung von MapReduce und BigTable von Philipp Kemkes Hadoop Framework für skalierbare, verteilt arbeitende Software Zur Verarbeitung großer Datenmengen (Terra- bis Petabyte)

Mehr

MapReduce in der Praxis

MapReduce in der Praxis MapReduce in der Praxis Rolf Daniel Seminar Multicore Programmierung 09.12.2010 1 / 53 Agenda Einleitung 1 Einleitung 2 3 Disco Hadoop BOOM 4 2 / 53 1 Einleitung 2 3 Disco Hadoop BOOM 4 3 / 53 Motivation

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

SEMT. Prof. G. Bengel. Searching as a Service (Programming Model: MapReduce)

SEMT. Prof. G. Bengel. Searching as a Service (Programming Model: MapReduce) Hochschule Mannheim Fakultät für Informatik SEMT Prof. G. Bengel Sommersemester 2009 Semester 8I Searching as a Service (Programming Model: MapReduce) Michel Schmitt (520361) 1.06.2009 Inhalt 1. Einführung...

Mehr

Hadoop aus IT-Operations Sicht Teil 1 Hadoop-Grundlagen

Hadoop aus IT-Operations Sicht Teil 1 Hadoop-Grundlagen Hadoop aus IT-Operations Sicht Teil 1 Hadoop-Grundlagen Brownbag am Freitag, den 26.07.2013 Daniel Bäurer inovex GmbH Systems Engineer Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim

Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim Tobias Neef Cloud-Computing Seminar Hochschule Mannheim WS0910 1/23 Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim Tobias Neef Fakultät für Informatik Hochschule Mannheim tobnee@gmail.com

Mehr

Beratung. Results, no Excuses. Consulting. Lösungen. Grown from Experience. Ventum Consulting. SQL auf Hadoop Oliver Gehlert. 2014 Ventum Consulting

Beratung. Results, no Excuses. Consulting. Lösungen. Grown from Experience. Ventum Consulting. SQL auf Hadoop Oliver Gehlert. 2014 Ventum Consulting Beratung Results, no Excuses. Consulting Lösungen Grown from Experience. Ventum Consulting SQL auf Hadoop Oliver Gehlert 1 Ventum Consulting Daten und Fakten Results, no excuses Fachwissen Branchenkenntnis

Mehr

Hadoop. High Performance Batches in der Cloud. Hadoop. Folie 1 25. Januar 2011

Hadoop. High Performance Batches in der Cloud. Hadoop. Folie 1 25. Januar 2011 High Performance Batches in der Cloud Folie 1 Alles geht in die Cloud Image: Chris Sharp / FreeDigitalPhotos.net Cloud und Batches passen zusammen Batches Cloud Pay-per-Use Nur zeitweise genutzt Hohe Rechenkapazitäten

Mehr

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 Kapitel 33 Der xml-datentyp In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 995 996 Kapitel 33: Der xml-datentyp Eine der wichtigsten

Mehr

Hadoop I/O. Datenintegrität Kompression Serialisierung Datei-basierte Datenstrukturen. 14.02.2012 Prof. Dr. Christian Herta 1/29

Hadoop I/O. Datenintegrität Kompression Serialisierung Datei-basierte Datenstrukturen. 14.02.2012 Prof. Dr. Christian Herta 1/29 Hadoop I/O Datenintegrität Kompression Serialisierung Datei-basierte Datenstrukturen 14.02.2012 Prof. Dr. Christian Herta 1/29 Data I/O und Hadoop Allgemeine Techniken Data I/O Datenintegrität Kompression

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Perzentile mit Hadoop ermitteln

Perzentile mit Hadoop ermitteln Perzentile mit Hadoop ermitteln Ausgangspunkt Ziel dieses Projektes war, einen Hadoop Job zu entwickeln, der mit Hilfe gegebener Parameter Simulationen durchführt und aus den Ergebnissen die Perzentile

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen Brainfuck 1 Brainfuck 1.1 Brainfuck Geschichte und Umfeld Brainfuck ist eine sogenannte esoterische Programmiersprache. Sie wurde 1993 vom Schweizer Urban Müller entworfen mit dem Ziel, eine Sprache mit

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

Business Intelligence Praktikum 1

Business Intelligence Praktikum 1 Hochschule Darmstadt Business Intelligence SS 2014 Fachbereich Informatik Praktikumsversuch 1 Prof. Dr. C. Wentzel Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 07.05.2014 Business Intelligence Praktikum

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Dokumentation QuickHMI-Schnittstelle für Oracle Datenbanken

Dokumentation QuickHMI-Schnittstelle für Oracle Datenbanken Dokumentation QuickHMI-Schnittstelle für Oracle Datenbanken Version 2.0 D-28359 Bremen info@indi-systems.de Tel + 49 421-989703-30 Fax + 49 421-989703-39 Inhaltsverzeichnis Was ist die QuickHMI-Schnittstelle

Mehr

Hadoop Demo HDFS, Pig & Hive in Action. Oracle DWH Konferenz 2014 Carsten Herbe

Hadoop Demo HDFS, Pig & Hive in Action. Oracle DWH Konferenz 2014 Carsten Herbe Hadoop Demo HDFS, Pig & Hive in Action Oracle DWH Konferenz 2014 Carsten Herbe Wir wollen eine semi-strukturierte Textdatei in Hadoop verarbeiten und so aufbereiten, dass man die Daten relational speichern

Mehr

Tutorial: Eigene Module und Extensions entwickeln. Version: 0.1 Autor: Anja Beuth

Tutorial: Eigene Module und Extensions entwickeln. Version: 0.1 Autor: Anja Beuth Tutorial: Eigene Module und Extensions entwickeln Version: 0.1 Autor: Anja Beuth Inhaltsverzeichnis 1 2 2.1 2.2 2.3 2.4 3 4 4.1 4.2 4.3 5 5.1 6 6.1 6.2 Notwendigkeit prüfen... Ein Projekt in Visual Studio

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

Spark, Impala und Hadoop in der Kreditrisikoberechnung

Spark, Impala und Hadoop in der Kreditrisikoberechnung Spark, Impala und Hadoop in der Kreditrisikoberechnung Big Data In-Memory-Technologien für mittelgroße Datenmengen TDWI München, 22. Juni 2015 Joschka Kupilas, Data Scientist, Adastra GmbH 2 Inhalt Vorwort

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger Informatik II Hinweise: Die Bearbeitungszeit beträgt 90

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Hochschule für Technik, Wirtschaft und Kultur Leipzig 06.06.2008 Datenbanken II,Speicherung und Verarbeitung großer Objekte

Mehr

Complex Hosting. Whitepaper. Autor.: Monika Olschewski. Version: 1.0 Erstellt am: 14.07.2010. ADACOR Hosting GmbH

Complex Hosting. Whitepaper. Autor.: Monika Olschewski. Version: 1.0 Erstellt am: 14.07.2010. ADACOR Hosting GmbH Complex Hosting Autor.: Monika Olschewski Whitepaper Version: 1.0 Erstellt am: 14.07.2010 ADACOR Hosting GmbH Kaiserleistrasse 51 63067 Offenbach am Main info@adacor.com www.adacor.com Complex Hosting

Mehr

Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i

Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i Inhaltsverzeichnis Überblick... 3 Die QlikView Applikation im Kontext... 4 Technische Rahmenbedinungen... 5 Funktionelle

Mehr

ANALYTICS, RISK MANAGEMENT & FINANCE ARCHITECTURE. NoSQL Datenbanksysteme Übersicht, Abgrenzung & Charakteristik

ANALYTICS, RISK MANAGEMENT & FINANCE ARCHITECTURE. NoSQL Datenbanksysteme Übersicht, Abgrenzung & Charakteristik ARFA ANALYTICS, RISK MANAGEMENT & FINANCE ARCHITECTURE NoSQL Datenbanksysteme Übersicht, Abgrenzung & Charakteristik Ralf Leipner Domain Architect Analytics, Risk Management & Finance 33. Berner Architekten

Mehr

Raumbezogene Datenbanken (Spatial Databases)

Raumbezogene Datenbanken (Spatial Databases) Raumbezogene Datenbanken (Spatial Databases) Ein Vortrag von Dominik Trinter Alexander Christian 1 Inhalte Was ist ein raumbezogenes DBMS? Modellierung Abfragen Werkzeuge zur Implementierung Systemarchitektur

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Datentypen (int, long, double, boolean, String) Variablen und Variablendeklarationen

Mehr

Dokumentation Authentische Strukturdaten

Dokumentation Authentische Strukturdaten Dokumentation Version 1.1 Version 1.0 Seite 1/18 31.10.2008 Inhaltsverzeichnis 1. Allgemeines...3 1.1 Phasenmodell...3 1.1.1 Phase I...3 1.1.2 Phase II...3 1.1.3 Phase III...3 1.2 Datenaktualität...3 2.

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

Business Intelligence Praktikum 1

Business Intelligence Praktikum 1 Hochschule Darmstadt Business Intelligence WS 2013-14 Fachbereich Informatik Praktikumsversuch 1 Prof. Dr. C. Wentzel Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.10.2013 Business Intelligence Praktikum

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Softwaretool Data Delivery Designer

Softwaretool Data Delivery Designer Softwaretool Data Delivery Designer 1. Einführung 1.1 Ausgangslage In Unternehmen existieren verschiedene und häufig sehr heterogene Informationssysteme die durch unterschiedliche Softwarelösungen verwaltet

Mehr

GPU-basierte Beschleunigung von MapReduce am Beispiel von OpenCL und Hadoop

GPU-basierte Beschleunigung von MapReduce am Beispiel von OpenCL und Hadoop am Beispiel von OpenCL und Masterseminar Hochschule für Technik, Wirtschaft und Kultur Leipzig Leipzig, 02.11.2011 Gliederung 1 Grundlagen 2 3 Gliederung 1 Grundlagen 2 3 Was ist? Clustersystem zur verteilten

Mehr

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A. »Programmieren«, WS 006/007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 4 Aufgabe 1 OOP In dieser Aufgabe sollen Sie Autos als Klasse Car modellieren. Die Eigenschaften auf attributiver Ebene sind:

Mehr

Java Programmierung auf der Konsole / unter Eclipse

Java Programmierung auf der Konsole / unter Eclipse Fakultät Informatik, HFU Brückenkurs Programmieren 1 Java Programmierung auf der Konsole / unter Eclipse Allgemeine Begriffe Programmiersprache: künstliche Sprache zur Notation von Programmen Programm:

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Einführung in Hadoop

Einführung in Hadoop Einführung in Hadoop Inhalt / Lern-Ziele Übersicht: Basis-Architektur von Hadoop Einführung in HDFS Einführung in MapReduce Ausblick: Hadoop Ökosystem Optimierungen Versionen 10.02.2012 Prof. Dr. Christian

Mehr

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien 1.1 Definition Datenbank Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen WEITER BLICKEN. MEHR ERKENNEN. BESSER ENTSCHEIDEN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN VERSION 1.0 OPTIMIERUNG VON ABFRAGEN IN MS SQL

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

MapReduce. www.kit.edu. Johann Volz. IPD Snelting, Lehrstuhl Programmierparadigmen

MapReduce. www.kit.edu. Johann Volz. IPD Snelting, Lehrstuhl Programmierparadigmen MapReduce Johann Volz IPD Snelting, Lehrstuhl Programmierparadigmen KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Wozu MapReduce?

Mehr

Sie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben.

Sie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben. Informatik I Wintersemester 2013/14 Prof. Dr. Carsten Damm Georg-August-Universität Göttingen Dr. Henrik Brosenne Institut für Informatik Übung 6 Abgabe bis Dienstag, 10.12., 18:00 Uhr. Werfen Sie Ihre

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Einfaches Datenmanagement in R

Einfaches Datenmanagement in R Einfaches Datenmanagement in R Achim Zeileis 2009-02-20 1 Daten einlesen Datensätze werden in R typischerweise als Objekte der Klasse "data.frame" dargestellt. In diesen entsprechen die Zeilen den Beobachtungen

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

Datenbanken. Ein DBS besteht aus zwei Teilen:

Datenbanken. Ein DBS besteht aus zwei Teilen: Datenbanken Wikipedia gibt unter http://de.wikipedia.org/wiki/datenbank einen kompakten Einblick in die Welt der Datenbanken, Datenbanksysteme, Datenbankmanagementsysteme & Co: Ein Datenbanksystem (DBS)

Mehr

OPERATIONEN AUF EINER DATENBANK

OPERATIONEN AUF EINER DATENBANK Einführung 1 OPERATIONEN AUF EINER DATENBANK Ein Benutzer stellt eine Anfrage: Die Benutzer einer Datenbank können meist sowohl interaktiv als auch über Anwendungen Anfragen an eine Datenbank stellen:

Mehr

Auswertung der Workload-Befragung mit MS ACCESS

Auswertung der Workload-Befragung mit MS ACCESS Auswertung der Workload-Befragung mit MS ACCESS Inhaltsverzeichnis 1. Aufbereitung der Daten... 2 1.1. Herstellung der Textfiles... 2 1.2. Import der Textdateien... 3 1.3. Verbindungen erstellen... 8 2.

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. Allgemein Ein Einzug sollte aus 4 Leerzeichen bestehen.

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo

Mehr

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift. Briefe Schreiben - Arbeiten mit Word-Steuerformaten Ab der Version 5.1 stellt die BüroWARE über die Word-Steuerformate eine einfache Methode dar, Briefe sowie Serienbriefe mit Hilfe der Korrespondenzverwaltung

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

4 Codierung nach Viginere (Lösung)

4 Codierung nach Viginere (Lösung) Kapitel 4 Codierung nach Viginere (Lösung) Seite 1/14 4 Codierung nach Viginere (Lösung) 4.1 Einführung Blaise de Vigenère lebte von 1523 bis 1596 in Frankreich und war nach dem Studium bei verschiedenen

Mehr

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 CARL HANSER VERLAG Christopher Allen Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 www.hanser.de Inhaltsverzeichnis Danksagung...XI Einleitung...XIII

Mehr

PHP Kurs Online Kurs Analysten Programmierer Web PHP

PHP Kurs Online Kurs Analysten Programmierer Web PHP PHP Kurs Online Kurs Analysten Programmierer Web PHP Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses PHP Modul 1 - Einführung und Installation PHP-Umgebung Erste Lerneinheit Introduzione

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

Verwaltung von OBI Metadaten: XML-Integration - die Lösung aller Probleme?

Verwaltung von OBI Metadaten: XML-Integration - die Lösung aller Probleme? Verwaltung von OBI Metadaten: XML-Integration - die Lösung aller Probleme? PROMATIS software GmbH Ettlingen (TechnologieRegion Karlsruhe) Schlüsselworte Oracle Business Intelligence Enterprise Edition

Mehr

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11 Datenbanksysteme WS 05/ 06 Gruppe 12 Martin Tintel Tatjana Triebl Seite 1 von 11 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1. Einleitung... 3 2. Datenbanken... 4 2.1. Oracle... 4 2.2. MySQL... 5 2.3 MS

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004 Zugriff auf Firebird-Datenbanken mit PHP Daniel de West DB-Campus-Treffen 15. Januar 2004 Inhalt PHP und Firebird Die wichtigsten Befehle Verbindungsaufbau Übermitteln von Abfragen Beenden von Verbindungen

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr