Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Vor einiger Zeit standen wir vor der Frage, ein ETL-Tool für die Arbeit mit BigData auszuwählen. Die zuvor verwendete Informatica BDM-Lösung war für uns aufgrund ihrer eingeschränkten Funktionalität nicht geeignet. Seine Verwendung wurde auf ein Framework zum Ausführen von Spark-Submit-Befehlen reduziert. Es gab nicht viele Analoga auf dem Markt, die grundsätzlich in der Lage waren, mit der Datenmenge zu arbeiten, mit der wir täglich zu tun haben. Am Ende haben wir uns für Ab Initio entschieden. Bei Pilotvorführungen zeigte das Produkt eine sehr hohe Datenverarbeitungsgeschwindigkeit. Es gibt fast keine Informationen über Ab Initio auf Russisch, deshalb haben wir beschlossen, über unsere Erfahrungen auf Habr zu berichten.

Ab Initio verfügt über viele klassische und ungewöhnliche Transformationen, deren Code mithilfe der eigenen PDL-Sprache erweitert werden kann. Für ein kleines Unternehmen ist ein derart leistungsstarkes Tool wahrscheinlich übertrieben und die meisten seiner Funktionen sind möglicherweise teuer und werden nicht genutzt. Wenn Ihre Größenordnung jedoch der der Sberbank ähnelt, könnte Ab Initio für Sie interessant sein.

Es hilft Unternehmen, weltweit Wissen anzusammeln und ein Ökosystem zu entwickeln, und hilft Entwicklern, ihre ETL-Kenntnisse zu verbessern, ihre Shell-Kenntnisse zu verbessern, bietet die Möglichkeit, die PDL-Sprache zu beherrschen, liefert eine visuelle Darstellung von Ladevorgängen und vereinfacht die Entwicklung dank der Fülle an Funktionskomponenten.

In diesem Beitrag werde ich über die Fähigkeiten von Ab Initio sprechen und vergleichende Merkmale seiner Arbeit mit Hive und GreenPlum bereitstellen.

  • Beschreibung des MDW-Frameworks und Arbeit an seiner Anpassung für GreenPlum
  • Vergleich der Ab Initio-Leistungsmerkmale bei der Arbeit mit Hive und GreenPlum
  • Von Anfang an nahezu in Echtzeit mit GreenPlum arbeiten


Die Funktionalität dieses Produkts ist sehr umfangreich und erfordert viel Zeit zum Erlernen. Mit den richtigen Fähigkeiten und den richtigen Leistungseinstellungen sind die Ergebnisse der Datenverarbeitung jedoch ziemlich beeindruckend. Die Verwendung von Ab Initio kann für einen Entwickler eine interessante Erfahrung sein. Dies ist eine neue Herangehensweise an die ETL-Entwicklung, ein Hybrid zwischen einer visuellen Umgebung und einer skriptähnlichen Sprachlastentwicklung.

Die Wirtschaft entwickelt ihre Ökosysteme und dieses Tool ist nützlicher denn je. Mit Ab Initio können Sie Wissen über Ihr aktuelles Geschäft sammeln und dieses Wissen nutzen, um alte Geschäfte auszubauen und neue zu eröffnen. Alternativen zu Ab Initio sind Informatica BDM aus visuellen Entwicklungsumgebungen und Apache Spark aus nicht-visuellen Umgebungen.

Beschreibung von Ab Initio

Ab Initio ist wie andere ETL-Tools eine Produktsuite.

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Ab Initio GDE (Graphical Development Environment) ist eine Umgebung, in der der Entwickler Datentransformationen einrichten und mit Datenflüssen in Form von Pfeilen verbinden kann. In diesem Fall wird eine solche Menge von Transformationen als Graph bezeichnet:

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Die Eingabe- und Ausgabeverbindungen von Funktionskomponenten sind Ports und enthalten Felder, die innerhalb der Transformationen berechnet werden. Als Plan werden mehrere Graphen bezeichnet, die durch Flüsse in Form von Pfeilen in der Reihenfolge ihrer Ausführung verbunden sind.

Es gibt mehrere hundert Funktionskomponenten, das ist eine Menge. Viele von ihnen sind hochspezialisiert. Die Möglichkeiten klassischer Transformationen in Ab Initio sind umfassender als in anderen ETL-Tools. Beispielsweise hat Join mehrere Ausgaben. Zusätzlich zum Ergebnis der Datensatzverknüpfung erhalten Sie am Ausgang die Datensätze der Eingabedatensätze, über deren Schlüssel keine Verknüpfung möglich war. Zusätzlich erhältst du Ablehnungen, Fehler und ein Log der Transformation, welches als Textdatei in der gleichen Spalte eingelesen und mit anderen Transformationen weiterverarbeitet werden kann:

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Oder Sie können beispielsweise den Datenempfänger in Form einer Tabelle materialisieren und Daten daraus in derselben Spalte lesen.

Es gibt originelle Transformationen. Beispielsweise verfügt die Scan-Transformation über eine Funktionalität, die analytischen Funktionen ähnelt. Es gibt Transformationen mit selbsterklärenden Namen: Daten erstellen, Excel lesen, Normalisieren, Innerhalb von Gruppen sortieren, Programm ausführen, SQL ausführen, Mit DB verbinden usw. Diagramme können Laufzeitparameter verwenden, einschließlich der Möglichkeit, Parameter vom Betriebssystem oder an das Betriebssystem zu übergeben. Dateien mit einem vorgefertigten Satz von Parametern, die an den Graphen übergeben werden, werden als Parametersätze (Psets) bezeichnet.

Wie erwartet verfügt Ab Initio GDE über ein eigenes Repository namens EME (Enterprise Meta Environment). Entwickler haben die Möglichkeit, mit lokalen Codeversionen zu arbeiten und ihre Entwicklungen im zentralen Repository einzuchecken.

Während oder nach der Ausführung des Diagramms ist es möglich, auf einen beliebigen Fluss zu klicken, der Transformationen verbindet, und sich die Daten anzusehen, die zwischen diesen Transformationen übertragen wurden:

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Es ist auch möglich, auf einen beliebigen Stream zu klicken und Tracking-Details anzuzeigen – in wie vielen Parallelen die Transformation durchgeführt wurde, wie viele Zeilen und Bytes in welcher Parallele geladen wurden:

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Es ist möglich, die Ausführung des Graphen in Phasen aufzuteilen und zu markieren, dass einige Transformationen zuerst (in Phase Null), die nächsten in der ersten Phase, die nächsten in der zweiten Phase usw. ausgeführt werden sollen.

Für jede Transformation kann das Layout (der Ausführungsort) gewählt werden: ohne Parallelverarbeitung oder in parallelen Threads, deren Anzahl festgelegt werden kann. Temporäre Dateien, die von Ab Initio während der Transformationsausführung erstellt werden, können im Dateisystem abgelegt werden. Serversowie in HDFS.

Bei jeder Transformation können Sie basierend auf der Standardvorlage Ihr eigenes Skript in der PDL-Sprache erstellen, die ein bisschen wie eine Shell funktioniert.

Mit der PDL-Sprache können Sie die Funktionalität von Transformationen erweitern und insbesondere beliebige Codefragmente dynamisch (zur Laufzeit) in Abhängigkeit von Laufzeitparametern generieren.

Ab Initio verfügt außerdem über eine gut entwickelte Integration mit dem Betriebssystem über die Shell. Insbesondere verwendet die Sberbank Linux ksh. Sie können Shell-Variablen austauschen und als Graphparameter verwenden. Sie können Ab Initio-Diagramme aus der Shell aufrufen und Ab Initio verwalten.

Im Lieferumfang sind neben Ab Initio GDE noch viele weitere Produkte enthalten. Es handelt sich um ein eigenes Co>Operation System mit dem Anspruch, als Betriebssystem bezeichnet zu werden. Es gibt Control>Center, wo Sie einen Zeitplan festlegen und Download-Streams überwachen können. Es gibt Produkte, mit denen sich Entwicklungen auf einer primitiveren Ebene durchführen lassen, als Ab Initio GDE dies zulässt.

Beschreibung des MDW-Frameworks und Arbeit an seiner Anpassung für GreenPlum

Zusammen mit seinen Produkten liefert der Anbieter das Produkt MDW (Metadata Driven Warehouse), einen Graphenkonfigurator, der bei typischen Aufgaben zum Befüllen von Data Warehouses oder Datentresoren helfen soll.

Es enthält benutzerdefinierte (projektspezifische) Metadatenparser und sofort einsatzbereite Codegeneratoren.

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum
Als Eingabe erhält MDW ein Datenmodell, eine Konfigurationsdatei zum Einrichten einer Verbindung zu einer Datenbank (Oracle, Teradata oder Hive) und einige andere Einstellungen. Der projektspezifische Teil stellt beispielsweise das Modell in der Datenbank bereit. Der Box-Teil des Produkts generiert beim Laden von Daten in die Modelltabellen Diagramme und Konfigurationsdateien für diese. Dadurch werden Diagramme (und Psets) für mehrere Initialisierungsmodi und inkrementelle Arbeit zum Aktualisieren von Entitäten erstellt.

Bei Hive und RDBMS werden unterschiedliche Diagramme zur Initialisierung und inkrementellen Datenaktualisierung generiert.

Bei Hive werden die eingehenden Deltadaten per Ab Initio Join mit den Daten verknüpft, die sich vor der Aktualisierung in der Tabelle befanden. Datenlader in MDW (sowohl in Hive als auch in RDBMS) fügen nicht nur neue Daten aus dem Delta ein, sondern schließen auch die Gültigkeitszeiträume der Daten, für deren Primärschlüssel das Delta empfangen wurde. Darüber hinaus ist es notwendig, den unveränderten Teil der Daten neu zu schreiben. Dies muss jedoch getan werden, da Hive keine Lösch- oder Aktualisierungsvorgänge unterstützt.

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Im Fall von RDBMS sehen Diagramme für inkrementelle Datenaktualisierungen optimaler aus, da RDBMS über echte Aktualisierungsfunktionen verfügen.

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Das empfangene Delta wird in eine Zwischentabelle in der Datenbank geladen. Anschließend wird das Delta mit den Daten verknüpft, die vor der Aktualisierung in der Tabelle vorhanden waren. Und dies geschieht mithilfe von SQL über eine generierte SQL-Abfrage. Anschließend werden mit den SQL-Befehlen delete+insert neue Daten aus dem Delta in die Zieltabelle eingefügt und die Relevanzzeiträume der Daten geschlossen, für deren Primärschlüssel das Delta empfangen wurde.
Es besteht keine Notwendigkeit, unveränderte Daten neu zu schreiben.

Daher kamen wir zu dem Schluss, dass MDW im Fall von Hive die gesamte Tabelle neu schreiben sollte, da Hive keine Aktualisierungsfunktion hat. Und nichts Besseres als das vollständige Neuschreiben von Daten während eines Updates wurde erfunden. Im Fall von RDBMS hingegen hielten es die Entwickler des Produkts für notwendig, die Verbindung und Aktualisierung von Tabellen der Verwendung von SQL anzuvertrauen.

Für ein Projekt bei der Sberbank haben wir eine neue wiederverwendbare Implementierung des Datenbankladers für GreenPlum erstellt. Dies geschah auf Grundlage der Version, die MDW für Teradata generiert. Teradata, nicht Oracle, war hierfür die beste und naheliegendste Wahl, da es sich ebenfalls um ein MPP-System handelt. Die Arbeitsweise und Syntax von Teradata und GreenPlum erwiesen sich als ähnlich.

Beispiele für kritische MDW-Unterschiede zwischen verschiedenen RDBMS sind die folgenden. In GreenPlum müssen Sie im Gegensatz zu Teradata beim Erstellen von Tabellen eine Klausel schreiben

distributed by

Teradata schreibt:

delete <table> all

, und GreenPlum schreibt

delete from <table>

In Oracle schreiben sie zu Optimierungszwecken

delete from t where rowid in (<соединение t с дельтой>)

, und Teradata und GreenPlum schreiben

delete from t where exists (select * from delta where delta.pk=t.pk)

Es sollte auch beachtet werden, dass für die Zusammenarbeit von Ab Initio mit GreenPlum der GreenPlum-Client auf allen Knoten des Ab Initio-Clusters installiert werden musste. Dies liegt daran, dass wir von allen Knoten in unserem Cluster gleichzeitig eine Verbindung zu GreenPlum hergestellt haben. Und damit das Lesen aus GreenPlum parallel erfolgt und jeder parallele Ab Initio-Thread seinen Datenanteil aus GreenPlum lesen kann, war es notwendig, im „Where“-Abschnitt von SQL-Abfragen eine von Ab Initio verstandene Konstruktion einzufügen.

where ABLOCAL()

und bestimmen Sie den Wert dieser Konstruktion durch Angabe des Parameters, der aus der Transformationsdatenbank gelesen wird

ablocal_expr=«string_concat("mod(t.", string_filter_out("{$TABLE_KEY}","{}"), ",", (decimal(3))(number_of_partitions()),")=", (decimal(3))(this_partition()))»

, was zu etwas wie folgt kompiliert wird:

mod(sk,10)=3

, d. h. Sie müssen GreenPlum für jede Partition mit einem expliziten Filter auffordern. Für andere Datenbanken (Teradata, Oracle) kann Ab Initio diese Parallelisierung automatisch durchführen.

Vergleich der Ab Initio-Leistungsmerkmale bei der Arbeit mit Hive und GreenPlum

Die Sberbank hat ein Experiment durchgeführt, um die Leistung der generierten MDW-Diagramme im Vergleich zu Hive und GreenPlum zu vergleichen. Im Experiment hatte Hive 5 Knoten im selben Cluster wie Ab Initio, während GreenPlum 4 Knoten in einem separaten Cluster hatte. Diese. Hive hatte in Bezug auf die Hardware einige Vorteile gegenüber GreenPlum.

Es wurden zwei Diagrammpaare berücksichtigt, die dieselbe Datenaktualisierungsaufgabe in Hive und GreenPlum ausführten. Gleichzeitig wurden die vom MDW-Konfigurator generierten Grafiken gestartet:

  • anfängliches Laden + inkrementelles Laden zufällig generierter Daten in die Hive-Tabelle
  • Initialisierungslast + inkrementelles Laden zufällig generierter Daten in dieselbe GreenPlum-Tabelle

In beiden Fällen (Hive und GreenPlum) haben wir die Lasten in 10 parallelen Threads auf demselben Ab Initio-Cluster ausgeführt. Zwischendaten für Ab-Initio-Berechnungen wurden in HDFS gespeichert (in Ab-Initio-Begriffen wurde ein MFS-Layout mit HDFS verwendet). Eine Zeile zufällig generierter Daten nahm in beiden Fällen 200 Bytes ein.

Das Ergebnis war wie folgt:

Bienenstock:

Initialisieren der Ladung in Hive

Eingefügte Zeilen
6 000 000
60 000 000
600 000 000

Initialisierungsdauer
Downloads in Sekunden
41
203
1 601

Inkrementelles Laden in Hive

Die Anzahl der Zeilen in
Zieltabelle zu Beginn des Experiments
6 000 000
60 000 000
600 000 000

Anzahl der Deltazeilen, die angewendet werden auf
Zieltabelle während des Experiments
6 000 000
6 000 000
6 000 000

Inkrementelle Dauer
Downloads in Sekunden
88
299
2 541

Grüne Pflaume:

Initialisierungsladen in GreenPlum

Eingefügte Zeilen
6 000 000
60 000 000
600 000 000

Initialisierungsdauer
Downloads in Sekunden
72
360
3 631

Inkrementelles Laden in GreenPlum

Die Anzahl der Zeilen in
Zieltabelle zu Beginn des Experiments
6 000 000
60 000 000
600 000 000

Anzahl der Deltazeilen, die angewendet werden auf
Zieltabelle während des Experiments
6 000 000
6 000 000
6 000 000

Inkrementelle Dauer
Downloads in Sekunden
159
199
321

Wir sehen, dass die Geschwindigkeit der Initialisierungslast sowohl bei Hive als auch bei GreenPlum linear vom Datenvolumen abhängt und aufgrund der besseren Hardware bei Hive etwas schneller ist als bei GreenPlum.

Das inkrementelle Laden in Hive hängt außerdem linear vom Volumen der zuvor geladenen Daten in der Zieltabelle ab und ist mit zunehmendem Volumen ziemlich langsam. Dies liegt daran, dass die Zieltabelle vollständig neu geschrieben werden muss. Dies bedeutet, dass das Anwenden kleiner Änderungen auf große Tabellen kein guter Anwendungsfall für Hive ist.

Das inkrementelle Laden in GreenPlum hängt schwach vom Volumen der zuvor geladenen Daten in der Zieltabelle ab und ist recht schnell. Dies wurde dank SQL Joins und der GreenPlum-Architektur erreicht, die den Löschvorgang ermöglicht.

GreenPlum fügt das Delta also mithilfe der Methode „Löschen+Einfügen“ ein, und Hive verfügt nicht über Lösch- oder Aktualisierungsvorgänge, sodass das gesamte Datenarray während der inkrementellen Aktualisierung vollständig neu geschrieben werden musste. Der Vergleich der fett hervorgehobenen Zellen ist am aussagekräftigsten, da er der häufigsten Variante der Ausnutzung ressourcenintensiver Downloads entspricht. Wir sehen, dass GreenPlum Hive in diesem Test um das Achtfache schlägt.

Von Anfang an nahezu in Echtzeit mit GreenPlum arbeiten

In diesem Experiment testen wir die Fähigkeit von Ab Initio, eine GreenPlum-Tabelle mit zufällig generierten Datenteilen nahezu in Echtzeit zu aktualisieren. Betrachten wir die GreenPlum dev42_1_db_usl.TESTING_SUBJ_org_finval-Tabelle, mit der wir arbeiten werden.

Wir werden drei Ab-Initio-Diagramme verwenden, um damit zu arbeiten:

1) Graph Create_test_data.mp – erstellt Dateien mit Daten in HDFS mit 10 Zeilen in 6 parallelen Streams. Die Daten sind zufällig, ihre Struktur ist für die Einfügung in unsere Tabelle organisiert.

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

2) Graph mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset – von MDW generierter Graph zum Initialisieren des Einfügens von Daten in unsere Tabelle in 10 parallelen Threads (es werden Testdaten verwendet, die vom Graphen (1) generiert wurden)

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

3) Graph mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset – Graph, der von MDW für die inkrementelle Aktualisierung unserer Tabelle in 10 parallelen Threads unter Verwendung eines Teils der neu empfangenen Daten (Delta) generiert wurde, generiert von Graph (1)

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum

Lassen Sie uns das folgende Skript im NRT-Modus ausführen:

  • 6 Teststrings generieren
  • Initialisierung durchführen laden 6 Testzeilen in leere Tabelle einfügen
  • Wiederholen Sie das inkrementelle Laden fünfmal
    • 6 Teststrings generieren
    • Führen Sie ein inkrementelles Einfügen von 6 Testzeilen in die Tabelle durch (während die alten Daten auf die Ablaufzeit von valid_to_ts gesetzt werden und neuere Daten mit demselben Primärschlüssel eingefügt werden).

Dieses Szenario emuliert den tatsächlichen Betriebsmodus eines bestimmten Geschäftssystems – in Echtzeit erscheint ein ziemlich großer Teil neuer Daten und wird sofort in GreenPlum eingespeist.

Sehen wir uns nun das Skriptausführungsprotokoll an:

Starten Sie Create_test_data.input.pset am 2020 um 06:04:11
Fertigstellen von Create_test_data.input.pset am 2020 um 06:04:11
Starten Sie mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:11
Beenden Sie mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:11
Starten Sie Create_test_data.input.pset am 2020 um 06:04:11
Fertigstellen von Create_test_data.input.pset am 2020 um 06:04:11
Starten Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:11
Beenden Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:11
Starten Sie Create_test_data.input.pset am 2020 um 06:04:11
Fertigstellen von Create_test_data.input.pset am 2020 um 06:04:11
Starten Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:11
Beenden Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:11
Starten Sie Create_test_data.input.pset am 2020 um 06:04:11
Fertigstellen von Create_test_data.input.pset am 2020 um 06:04:11
Starten Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:11
Beenden Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:11
Starten Sie Create_test_data.input.pset am 2020 um 06:04:11
Fertigstellen von Create_test_data.input.pset am 2020 um 06:04:12
Starten Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:12
Beenden Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:12
Starten Sie Create_test_data.input.pset am 2020 um 06:04:12
Fertigstellen von Create_test_data.input.pset am 2020 um 06:04:12
Starten Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:12
Beenden Sie mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset am 2020 um 06:04:12

Das resultierende Bild sieht wie folgt aus:

Graph
Startzeit
Endzeit
Länge

Testdaten erstellen.Eingabe.pset
04.06.2020 11: 49: 11
04.06.2020 11: 49: 37
00:00:26

mdw_load.day_one.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 49: 37
04.06.2020 11: 50: 42
00:01:05

Testdaten erstellen.Eingabe.pset
04.06.2020 11: 50: 42
04.06.2020 11: 51: 06
00:00:24

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 51: 06
04.06.2020 11: 53: 41
00:02:35

Testdaten erstellen.Eingabe.pset
04.06.2020 11: 53: 41
04.06.2020 11: 54: 04
00:00:23

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 54: 04
04.06.2020 11: 56: 51
00:02:47

Testdaten erstellen.Eingabe.pset
04.06.2020 11: 56: 51
04.06.2020 11: 57: 14
00:00:23

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 57: 14
04.06.2020 11: 59: 55
00:02:41

Testdaten erstellen.Eingabe.pset
04.06.2020 11: 59: 55
04.06.2020 12: 00: 23
00:00:28

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 12: 00: 23
04.06.2020 12: 03: 23
00:03:00

Testdaten erstellen.Eingabe.pset
04.06.2020 12: 03: 23
04.06.2020 12: 03: 49
00:00:26

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 12: 03: 49
04.06.2020 12: 06: 46
00:02:57

Wir sehen, dass 6 Inkrementzeilen in 000 Minuten verarbeitet werden, was ziemlich schnell ist.
Die Daten in der Zieltabelle waren wie folgt verteilt:

select valid_from_ts, valid_to_ts, count(1), min(sk), max(sk) from dev42_1_db_usl.TESTING_SUBJ_org_finval group by valid_from_ts, valid_to_ts order by 1,2;

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum
Sie können die Übereinstimmung zwischen den eingefügten Daten und den Zeitpunkten des Diagrammstarts sehen.
Dies bedeutet, dass Sie in Ab Initio inkrementelle Datenladevorgänge mit sehr hoher Frequenz in GreenPlum ausführen und die Einfügung dieser Daten in GreenPlum mit hoher Geschwindigkeit beobachten können. Natürlich ist es nicht möglich, es einmal pro Sekunde zu starten, da Ab Initio wie jedes ETL-Tool beim Start eine gewisse Zeit zum „Aufwärmen“ benötigt.

Fazit

Ab Initio wird derzeit bei der Sberbank zum Erstellen des Unified Semantic Data Layer (USDL) verwendet. Bei diesem Projekt geht es darum, eine einheitliche Version des Status verschiedener Bankgeschäftseinheiten zu erstellen. Die Informationen stammen aus verschiedenen Quellen, von denen Replikate auf Hadoop erstellt werden. Basierend auf den Geschäftsanforderungen wird ein Datenmodell erstellt und Datentransformationen werden beschrieben. Ab Initio lädt Informationen in das ECC und die geladenen Daten sind nicht nur für das Unternehmen selbst von Interesse, sondern dienen auch als Quelle für den Aufbau von Data Marts. Gleichzeitig ermöglicht die Funktionalität des Produkts die Verwendung verschiedener Systeme (Hive, Greenplum, Teradata, Oracle) als Empfänger, wodurch Daten für ein Unternehmen mühelos in den verschiedenen von ihm benötigten Formaten aufbereitet werden können.

Die Funktionen von Ab Initio sind umfangreich. Beispielsweise ermöglicht das enthaltene MDW-Framework die sofortige Erstellung technischer und geschäftlicher historischer Daten. Für Entwickler bietet Ab Initio die Möglichkeit, „das Rad nicht neu zu erfinden“, sondern eine Vielzahl vorhandener Funktionskomponenten zu verwenden, bei denen es sich im Wesentlichen um Bibliotheken handelt, die bei der Arbeit mit Daten benötigt werden.

Der Autor ist Experte der professionellen Community der Sberbank SberProfi DWH/BigData. Die professionelle Community SberProfi DWH/BigData ist für die Entwicklung von Kompetenzen in Bereichen wie dem Hadoop-Ökosystem, Teradata, Oracle DB, GreenPlum sowie den BI-Tools Qlik, SAP BO, Tableau usw. verantwortlich.

Source: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz und VPS-VDS-Servern 🔥 Kaufen Sie zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster