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 Big Data auszuwählen. Die bisher eingesetzte BDM-Lösung von Informatica passte aufgrund der eingeschränkten Funktionalität nicht zu uns. Seine Verwendung wurde auf ein Framework zum Starten 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 Pilotdemonstrationen zeigte das Produkt eine sehr hohe Datenverarbeitungsgeschwindigkeit. Es gibt fast keine Informationen über Ab Initio auf Russisch, daher haben wir beschlossen, über unsere Erfahrungen auf Habré zu sprechen.

Ab Initio verfügt über viele klassische und ungewöhnliche Transformationen, deren Code mithilfe einer eigenen PDL-Sprache erweitert werden kann. Für ein kleines Unternehmen wäre ein derart leistungsstarkes Tool wahrscheinlich übertrieben und die meisten seiner Funktionen könnten teuer und ungenutzt sein. Wenn Ihr Maßstab jedoch dem von Sberov nahe kommt, könnte Ab Initio für Sie interessant sein.

Es hilft einem Unternehmen, weltweit Wissen zu sammeln und ein Ökosystem zu entwickeln, und einem Entwickler, seine Fähigkeiten in ETL zu verbessern, seine Kenntnisse in der Shell zu verbessern, bietet die Möglichkeit, die PDL-Sprache zu beherrschen, vermittelt ein visuelles Bild von Ladeprozessen und vereinfacht die Entwicklung aufgrund 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 liefern.

  • Beschreibung des MDW-Frameworks und Arbeiten an seiner Anpassung für GreenPlum
  • Ab Initio-Leistungsvergleich zwischen Hive und GreenPlum
  • Ab Initio mit GreenPlum im Nahezu-Echtzeit-Modus arbeiten


Die Funktionalität dieses Produkts ist sehr umfangreich und erfordert viel Zeit zum Erlernen. Mit den richtigen Arbeitsfähigkeiten und den richtigen Leistungseinstellungen sind die Ergebnisse der Datenverarbeitung jedoch sehr beeindruckend. Die Verwendung von Ab Initio für einen Entwickler kann eine interessante Erfahrung sein. Dies ist eine neue Sicht auf die ETL-Entwicklung, eine Mischung aus einer visuellen Umgebung und der Download-Entwicklung in einer skriptähnlichen Sprache.

Unternehmen entwickeln ihre Ökosysteme und dieses Tool ist praktischer denn je. Mit Ab Initio können Sie Wissen über Ihr aktuelles Unternehmen sammeln und dieses Wissen nutzen, um alte Unternehmen zu erweitern und neue Unternehmen zu eröffnen. Zu den Alternativen zu Ab Initio gehören die visuellen Entwicklungsumgebungen Informatica BDM und die nicht-visuellen Entwicklungsumgebungen Apache Spark.

Beschreibung von Ab Initio

Ab Initio ist wie andere ETL-Tools eine Sammlung von Produkten.

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

Ab Initio GDE (Graphical Development Environment) ist eine Umgebung für den Entwickler, in der er Datentransformationen konfiguriert und diese mit Datenflüssen in Form von Pfeilen verbindet. In diesem Fall wird ein solcher Satz von Transformationen als Graph bezeichnet:

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

Die Ein- und Ausgangsverbindungen funktionaler Komponenten sind Ports und enthalten im Rahmen von Transformationen berechnete Felder. Mehrere Diagramme, die durch Flüsse in Form von Pfeilen in der Reihenfolge ihrer Ausführung verbunden sind, werden als Plan bezeichnet.

Es gibt mehrere hundert Funktionskomponenten, was eine ganze Menge ist. Viele von ihnen sind hochspezialisiert. Die Möglichkeiten klassischer Transformationen in Ab Initio sind umfassender als in anderen ETL-Tools. Join hat beispielsweise mehrere Ausgaben. Zusätzlich zum Ergebnis der Verbindung von Datensätzen können Sie Ausgabedatensätze von Eingabedatensätzen erhalten, deren Schlüssel nicht verbunden werden konnten. Sie können auch Ablehnungen, Fehler und ein Protokoll des Transformationsvorgangs erhalten, das in derselben Spalte wie eine Textdatei gelesen und mit anderen Transformationen verarbeitet werden kann:

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

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

Es gibt originelle Transformationen. Beispielsweise verfügt die Scan-Umwandlung über ähnliche Funktionen wie analytische Funktionen. 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 von oder an zu übergeben das Betriebssystem. Dateien mit einem vorgefertigten Parametersatz, der an das Diagramm übergeben wird, werden Parametersätze (psets) genannt.

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 in das zentrale Repository einzuchecken.

Es ist möglich, während der Ausführung oder nach der Ausführung des Diagramms auf einen beliebigen Fluss zu klicken, der die Transformation 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 funktioniert hat, wie viele Zeilen und Bytes in welche der Parallelen geladen wurden:

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

Es ist möglich, die Ausführung des Diagramms in Phasen zu unterteilen und zu markieren, dass einige Transformationen zuerst (in der Nullphase), die nächsten in der ersten Phase, die nächsten in der zweiten Phase usw. durchgeführt werden müssen.

Für jede Transformation können Sie das sogenannte Layout (wo sie ausgeführt wird) wählen: ohne Parallelen oder in parallelen Threads, deren Anzahl angegeben werden kann. Gleichzeitig können temporäre Dateien, die Ab Initio bei der Ausführung von Transformationen erstellt, sowohl im Serverdateisystem als auch in HDFS abgelegt werden.

In jeder Transformation können Sie basierend auf der Standardvorlage Ihr eigenes Skript in PDL erstellen, das ein bisschen wie eine Shell ist.

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

Ab Initio verfügt außerdem über eine gut entwickelte Integration mit dem Betriebssystem über die Shell. Konkret verwendet die Sberbank Linux KSH. Sie können Variablen mit der Shell austauschen und diese als Diagrammparameter verwenden. Sie können die Ausführung von Ab Initio-Diagrammen über die Shell aufrufen und Ab Initio verwalten.

Im Lieferumfang sind neben Ab Initio GDE noch viele weitere Produkte enthalten. Es gibt ein eigenes Co>Operation System mit dem Anspruch, Betriebssystem genannt zu werden. Es gibt ein Control>Center, in dem Sie Download-Flows planen und überwachen können. Es gibt Produkte für die Entwicklung auf einer einfacheren Ebene, als Ab Initio GDE zulässt.

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

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

Es enthält benutzerdefinierte (projektspezifische) Metadaten-Parser und vorgefertigte Codegeneratoren.

Wenn Sie Sber-Waagen haben. Verwendung von Ab Initio mit Hive und GreenPlum
Als Input erhält MDW ein Datenmodell, eine Konfigurationsdatei zum Aufbau einer Verbindung zu einer Datenbank (Oracle, Teradata oder Hive) und einige weitere Einstellungen. Der projektspezifische Teil stellt beispielsweise das Modell in einer Datenbank bereit. Der sofort einsatzbereite Teil des Produkts generiert Diagramme und Konfigurationsdateien für sie, indem er Daten in Modelltabellen lädt. In diesem Fall werden Diagramme (und Psets) für verschiedene Initialisierungsmodi und inkrementelle Arbeiten zur Aktualisierung von Entitäten erstellt.

Bei Hive und RDBMS werden unterschiedliche Diagramme für die Initialisierung und inkrementelle Datenaktualisierungen generiert.

Im Fall von Hive werden die eingehenden Delta-Daten über Ab Initio Join mit den Daten verknüpft, die vor dem Update in der Tabelle waren. 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 relevanten Zeiträume der Daten, deren Primärschlüssel das Delta erhalten haben. Außerdem müssen Sie den unveränderten Teil der Daten neu schreiben. Dies muss jedoch erfolgen, da Hive keine Lösch- oder Aktualisierungsvorgänge hat.

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

Im Fall von RDBMS sehen Diagramme für die inkrementelle Datenaktualisierung optimaler aus, da RDBMS über echte Aktualisierungsmöglichkeiten 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. Danach wird das Delta mit den Daten verknüpft, die vor der Aktualisierung in der Tabelle waren. Und dies geschieht mittels 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 Relevanzperioden der Daten, deren Primärschlüssel das Delta erhalten haben, geschlossen.
Es besteht keine Notwendigkeit, unveränderte Daten neu zu schreiben.

Wir kamen also zu dem Schluss, dass MDW im Fall von Hive die gesamte Tabelle neu schreiben muss, da Hive keine Aktualisierungsfunktion hat. Und es gibt nichts Besseres, als die Daten komplett neu zu schreiben, wenn die Aktualisierung erfunden wurde. 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 eines Datenbankladers für GreenPlum erstellt. Dies erfolgte auf Basis der Version, die MDW für Teradata generiert. Es war Teradata und nicht Oracle, das diesem Ziel am nächsten und am besten entsprach, denn... ist ebenfalls ein MPP-System. Die Arbeitsweise sowie die Syntax von Teradata und GreenPlum erwiesen sich als ähnlich.

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

distributed by

Teradata schreibt:

delete <table> all

, und in GreenPlum schreiben sie

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)

Wir weisen außerdem darauf hin, dass es für die Zusammenarbeit von Ab Initio mit GreenPlum erforderlich war, den GreenPlum-Client auf allen Knoten des Ab Initio-Clusters zu installieren. Dies liegt daran, dass wir von allen Knoten in unserem Cluster gleichzeitig eine Verbindung zu GreenPlum hergestellt haben. Und damit das Lesen von GreenPlum parallel erfolgt und jeder parallele Ab Initio-Thread seinen eigenen Teil der Daten von GreenPlum lesen kann, mussten wir eine von Ab Initio verstandene Konstruktion im „where“-Abschnitt von SQL-Abfragen platzieren

where ABLOCAL()

und bestimmen Sie den Wert dieser Konstruktion, indem Sie den Parameter angeben, 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 etwa kompiliert wird

mod(sk,10)=3

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

Ab Initio-Leistungsvergleich zwischen Hive und GreenPlum

Die Sberbank führte ein Experiment durch, um die Leistung von MDW-generierten Diagrammen im Verhältnis zu Hive und im Verhältnis zu GreenPlum zu vergleichen. Im Rahmen des Experiments befanden sich im Fall von Hive 5 Knoten im selben Cluster wie Ab Initio und im Fall von GreenPlum 4 Knoten in einem separaten Cluster. Diese. Hive hatte gegenüber GreenPlum einige Hardware-Vorteile.

Wir haben zwei Diagrammpaare betrachtet, die die gleiche Aufgabe der Datenaktualisierung in Hive und GreenPlum ausführen. Gleichzeitig wurden die vom MDW-Konfigurator generierten Grafiken gestartet:

  • Erster Ladevorgang + inkrementeller Ladevorgang zufällig generierter Daten in eine Hive-Tabelle
  • Erster Ladevorgang + inkrementeller Ladevorgang zufällig generierter Daten in dieselbe GreenPlum-Tabelle

In beiden Fällen (Hive und GreenPlum) führten sie Uploads in 10 parallele Threads auf demselben Ab Initio-Cluster durch. Ab Initio speicherte Zwischendaten für Berechnungen in HDFS (für Ab Initio wurde das MFS-Layout mit HDFS verwendet). Eine Zeile zufällig generierter Daten belegte in beiden Fällen 200 Bytes.

Das Ergebnis war so:

Bienenstock:

Erstmaliges Laden in Hive

Zeilen eingefügt
6 000 000
60 000 000
600 000 000

Initialisierungsdauer
Downloads in Sekunden
41
203
1 601

Inkrementelles Laden in Hive

Anzahl der verfügbaren Zeilen in
Zieltabelle zu Beginn des Experiments
6 000 000
60 000 000
600 000 000

Anzahl der angewendeten Deltalinien
Zieltabelle während des Experiments
6 000 000
6 000 000
6 000 000

Dauer der Inkrementierung
Downloads in Sekunden
88
299
2 541

Grüne Pflaume:

Erstmaliges Laden in GreenPlum

Zeilen eingefügt
6 000 000
60 000 000
600 000 000

Initialisierungsdauer
Downloads in Sekunden
72
360
3 631

Inkrementelles Laden in GreenPlum

Anzahl der verfügbaren Zeilen in
Zieltabelle zu Beginn des Experiments
6 000 000
60 000 000
600 000 000

Anzahl der angewendeten Deltalinien
Zieltabelle während des Experiments
6 000 000
6 000 000
6 000 000

Dauer der Inkrementierung
Downloads in Sekunden
159
199
321

Wir sehen, dass die Geschwindigkeit des anfänglichen Ladens sowohl in Hive als auch in GreenPlum linear von der Datenmenge abhängt und aus Gründen der besseren Hardware bei Hive etwas schneller ist als bei GreenPlum.

Das inkrementelle Laden in Hive hängt auch linear von der Menge der zuvor geladenen Daten ab, die in der Zieltabelle verfügbar sind, und verläuft recht langsam, wenn die Menge zunimmt. Dies liegt daran, dass die Zieltabelle vollständig neu geschrieben werden muss. Das bedeutet, dass die Anwendung kleiner Änderungen auf große Tabellen kein guter Anwendungsfall für Hive ist.

Das inkrementelle Laden in GreenPlum hängt schwach von der Menge der zuvor geladenen Daten ab, die in der Zieltabelle verfügbar sind, und geht recht schnell vonstatten. Dies geschah dank SQL Joins und der GreenPlum-Architektur, die den Löschvorgang ermöglicht.

Daher fügt GreenPlum das Delta mithilfe der Methode „Löschen+Einfügen“ hinzu, Hive verfügt jedoch nicht über Lösch- oder Aktualisierungsvorgänge, sodass das gesamte Datenarray während einer inkrementellen Aktualisierung vollständig neu geschrieben werden musste. Am aussagekräftigsten ist der Vergleich der fett hervorgehobenen Zellen, da es sich dabei um die häufigste Variante zur Nutzung ressourcenintensiver Downloads handelt. Wir sehen, dass GreenPlum Hive in diesem Test um das Achtfache geschlagen hat.

Ab Initio mit GreenPlum im Nahezu-Echtzeit-Modus arbeiten

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

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

1) Graph Create_test_data.mp – erstellt Datendateien in HDFS mit 10 Zeilen in 6 parallelen Threads. Die Daten sind zufällig, ihre Struktur ist zum Einfügen 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) Diagramm mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset – MDW generiertes Diagramm durch Initialisierung der Dateneinfügung in unsere Tabelle in 10 parallelen Threads (von Diagramm (1) generierte Testdaten werden verwendet)

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

3) Diagramm mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset – ein von MDW generiertes Diagramm zur inkrementellen Aktualisierung unserer Tabelle in 10 parallelen Threads unter Verwendung eines Teils der frisch empfangenen Daten (Delta), die von Diagramm (1) generiert wurden.

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

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

  • Generieren Sie 6 Testlinien
  • Führen Sie einen ersten Ladevorgang durch und fügen Sie 6 Testzeilen in eine leere Tabelle ein
  • Wiederholen Sie den inkrementellen Download fünfmal
    • Generieren Sie 6 Testlinien
    • Führen Sie eine inkrementelle Einfügung von 6 Testzeilen in die Tabelle durch (in diesem Fall wird die Ablaufzeit von valid_to_ts auf die alten Daten gesetzt und neuere Daten mit demselben Primärschlüssel werden eingefügt).

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

Schauen wir uns nun das Protokoll des Skripts an:

Starten Sie Create_test_data.input.pset am 2020 um 06:04:11
Beenden Sie Create_test_data.input.pset am 2020 um 06:04:11 Uhr
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
Beenden Sie Create_test_data.input.pset am 2020 um 06:04:11 Uhr
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
Beenden Sie Create_test_data.input.pset am 2020 um 06:04:11 Uhr
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
Beenden Sie Create_test_data.input.pset am 2020 um 06:04:11 Uhr
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
Beenden Sie Create_test_data.input.pset am 2020 um 06:04:12 Uhr
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
Beenden Sie Create_test_data.input.pset am 2020 um 06:04:12 Uhr
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

Es stellt sich dieses Bild heraus:

Graph
Startzeit
Endzeit
Länge

Create_test_data.input.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

Create_test_data.input.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

Create_test_data.input.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

Create_test_data.input.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

Create_test_data.input.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

Create_test_data.input.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.
Es stellte sich heraus, dass die Daten in der Zieltabelle wie folgt verteilt waren:

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 der eingefügten Daten mit den Startzeiten der Diagramme sehen.
Dies bedeutet, dass Sie das inkrementelle Laden von Daten in GreenPlum in Ab Initio mit sehr hoher Häufigkeit ausführen und eine hohe Geschwindigkeit beim Einfügen dieser Daten in GreenPlum beobachten können. Natürlich wird es nicht möglich sein, einmal pro Sekunde zu starten, da Ab Initio, wie jedes ETL-Tool, beim Start Zeit zum „Starten“ benötigt.

Abschluss

Ab Initio wird derzeit bei der Sberbank zum Aufbau eines Unified Semantic Data Layer (ESS) eingesetzt. Bei diesem Projekt geht es darum, eine einheitliche Version des Zustands verschiedener Bankgeschäftseinheiten zu erstellen. Die Informationen stammen aus verschiedenen Quellen, deren Replikate auf Hadoop aufbereitet werden. Basierend auf den Geschäftsanforderungen wird ein Datenmodell erstellt und Datentransformationen beschrieben. Ab Initio lädt Informationen in das ESN und die heruntergeladenen 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 als Empfänger (Hive, Greenplum, Teradata, Oracle), was eine einfache Aufbereitung von Daten für ein Unternehmen in den verschiedenen benötigten Formaten ermöglicht.

Die Möglichkeiten von Ab Initio sind vielfältig; das mitgelieferte MDW-Framework ermöglicht beispielsweise die sofortige Erstellung technischer und geschäftlicher historischer Daten. Für Entwickler ermöglicht Ab Initio, das Rad nicht neu zu erfinden, sondern viele vorhandene Funktionskomponenten zu nutzen, bei denen es sich im Wesentlichen um Bibliotheken handelt, die für die Arbeit mit Daten benötigt werden.

Der Autor ist ein Experte in der Fachwelt der Sberbank SberProfi DWH/BigData. Die SberProfi DWH/BigData-Fachgemeinschaft 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

Kommentar hinzufügen