Przyspieszenie migracji Netezzy do Snowflake

Korzystanie z narzędzia Hashmap Data Migrator (hdm )

(Jhimli Bora)

autor: Jhimli Bora i John Aven

Hashmap Data Migrator (hdm) ułatwia migrację danych z jednej platformy danych na drugą. Obsługuje migrację zarówno lokalnych, jak i chmurowych hurtowni danych. hdm został zaprojektowany tak, aby był bardzo elastyczny pod względem & źródła danych, systemu zarządzania stanem i lokalizacji przemieszczania.

Uwaga: ten post na blogu jest część serii Hashmap Data Migrator. Więcej informacji na temat terminów można znaleźć w poprzednich postach na blogu: ( hdm (Hashmap Data Migrator) )

Spójrzmy na przypadek użycia hdm. Poniżej zobaczymy, jak łatwo jest skonfigurować i rozpocząć migrację danych z Netezza do Snowflake ( połączenie migracji o wysokim zapotrzebowaniu od naszego klienta base) przy użyciu a lokalnego systemu plików do lokalnego przygotowywania plików danych w celu manipulacji, np. dzielenia dużych plików na fragmenty i Azure Blob Storage jako etap przechowywania do ładowania danych w płatek śniegu.

FS to system plików

Możemy użyć sterownika JDBC lub ODBC do połączenia się z Netezza. Istnieją również 2 sposoby na odciążenie danych; użycie źródła Netezza ( wykonaj zapytanie SQL i załaduj ramkę danych pandy ) a nd zewnętrzne źródło tabeli Netezza ( wykonaj zapytanie SQL, aby utworzyć zewnętrzną tabelę i zapisać dane do pliku ).

Aby rozpocząć, wystarczy utwórz 2 pliki konfiguracyjne :

  • profil YAML – przechowuje informacje o połączeniu
  • potok YAML- przechowuje informacje o scenie

Profil YAML

Ten plik przechowuje informacje o połączeniu do źródła, etapu, ujścia i bazy danych w celu zarządzania stanem. Jest przechowywany w lokalnym FS, a jego ścieżka jest ustawiona w zmiennej środowiskowej „HOME”. Poniższy format pliku YAML jest oparty na transporcie danych Netezza do Snowflake przy użyciu Azure blob staging:

dev:
netezza_jdbc: * Note:Add this section if using JDBC driver
host:
port:
database:
user:
password:
driver:
name:
path:
netezza_odbc: * Note:Add this section if using ODBC driver
host:
port:
database:
user:
password:
driver:
snowflake_admin_schema:
authenticator: snowflake
account:
role:
warehouse:
database:
schema:
user:
password:
azure:
url:
azure_account_url:
sas:
container_name:
state_manager:
host:
port:
database:
user:
password:
driver: ODBC Driver 17 for SQL Server <*Note:only for azure sql server>

Pipeline YAML

Użytkownik powinien skupić się na tym do czasu zbudowania front-endu. To jest tylko plik konfiguracyjny. Po podaniu parametrów przez użytkownika będą one przepływać te punkty danych do odpowiednich klas i przenieś dane ze źródła do ujścia.

Omówmy sekcje w tym pliku.

Orchestrator:

Koordynator (koncepcja wewnętrznego dysku twardego) używany do organizowania wykonania potoku. Dostępne opcje to:

  • zadeklarowany_orchestrator – do ręcznego lub w pełni określonego wykonania
  • batch_orchestrator – gdy aranżacja jest zdefiniowana we w pełni określonej partii
  • auto_batch_orchestrator – gdy wykonanie jest wykonywane we wszystkich tabelach w określonych kombinacjach baz danych i schematów

Jest sformatowany w YAML jako taki:

zadeklarowany_typ orkiestratora

orchestrator:
name: Manual Orchestration
type: DeclaredOrchestrator
conf: null

Batch_orchestrator type

orchestrator:
name: Batch Orchestration
type: BatchOrchestrator
conf:
back_pressure_factor: 10

Auto_orchestrator type

orchestrator:
name: Auto Batch Orchestration
type: AutoOrchestrator
conf:
back_pressure_factor: 10

Menedżer stanu:

Następnie, co powinno być spójne dla wszystkich potoków, określono menedżera stanu. Jest to klej łączący ze sobą niezależne w inny sposób części rurociągu. Dostępne są następujące opcje:

  • SqLiteStateManager – wskazuje, że SQLite jest używany do zarządzania stanem
  • MySQLStateManager – wskazuje, że MySQL jest używany do zarządzania stanem
  • SQLServerStateManager – wskazuje, że SQL Server jest używany do zarządzania stanem
  • AzureSQLServerStateManager – wskazuje, że Azure SQL Server jest używany do zarządzania stanem

Jest sformatowany w YAML jako taki:

state_manager:
name: state_manager
type: SQLiteStateManager
conf:
connection: state_manager

Deklarowane łącza danych:

W tej sekcji definiujemy zadeklarowane łącza danych.

declared_data_links:
stages:
- source:
name: netezza_source
type: NetezzaSource
conf:
env: netezza_jdbc
table_name: ADMIN.TEST1
watermark:
column: T1
offset: 2
checksum:
function:
column:
sink:
name: fs_chunk_stg
type: FSSink
conf:
directory: $HDM_DATA_STAGING

Linki danych szablonu:

W tej sekcji definiujemy łącza danych na podstawie szablonu. Jest on używany wraz z zadeklarowanymi_danymi_linkami podczas korzystania z narzędzia Batch Orchestrator.

template_data_links:
templates:
- batch_template:
batch_definition:
source_name: netezza_source
scenarios:
- table_name: ADMIN.TEST1
watermark:
column : T1
offset : 2
- table_name: ADMIN.TEST2
watermark:
column: U1
offset: 2
source:
name: netezza_source
type: NetezzaSource
conf:
env: netezza_jdbc
table_name: <