Monitorowanie potoków Delta Live Tables
W tym artykule opisano używanie wbudowanych funkcji monitorowania i obserwacji potoków tabel na żywo usługi Delta. Te funkcje obsługują zadania, takie jak:
- Obserwowanie postępu i stanu aktualizacji potoku. Zobacz Jakie szczegóły potoku są dostępne w interfejsie użytkownika?.
- Alerty dotyczące zdarzeń potoku, takich jak powodzenie lub niepowodzenie aktualizacji potoku. Zobacz Dodawanie powiadomień e-mail dotyczących zdarzeń potoku.
- Wyodrębnianie szczegółowych informacji na temat aktualizacji potoku, takich jak pochodzenie danych, metryki jakości danych i użycie zasobów. Zobacz Co to jest dziennik zdarzeń tabel delta live?.
- Definiowanie akcji niestandardowych do wykonania w przypadku wystąpienia określonych zdarzeń. Zobacz Definiowanie niestandardowego monitorowania potoków tabel delta Live Tables za pomocą punktów zaczepienia zdarzeń.
Aby sprawdzić i zdiagnozować wydajność zapytań, zobacz Access query history for Delta Live Tables pipelines (Historia zapytań programu Access dla potoków tabel na żywo usługi Delta). Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Dodawanie powiadomień e-mail dotyczących zdarzeń potoku
Możesz skonfigurować co najmniej jeden adres e-mail, aby otrzymywać powiadomienia, gdy wystąpią następujące czynności:
- Aktualizacja potoku zostanie ukończona pomyślnie.
- Aktualizacja potoku kończy się niepowodzeniem z możliwością ponowienia próby lub błędem, który nie można ponowić. Wybierz tę opcję, aby otrzymywać powiadomienie dotyczące wszystkich niepowodzeń potoku.
- Aktualizacja potoku kończy się niepowodzeniem z błędem niemożliwym do ponowienia próby (krytycznym). Wybierz tę opcję, aby otrzymywać powiadomienie tylko wtedy, gdy wystąpi błąd niemożliwy do ponowienia próby.
- Pojedynczy przepływ danych kończy się niepowodzeniem.
Aby skonfigurować powiadomienia e-mail podczas tworzenia lub edytowania potoku:
- Kliknij pozycję Dodaj powiadomienie.
- Wprowadź co najmniej jeden adres e-mail, aby otrzymywać powiadomienia.
- Kliknij pole wyboru dla każdego typu powiadomienia, aby wysłać do skonfigurowanych adresów e-mail.
- Kliknij pozycję Dodaj powiadomienie.
Jakie szczegóły potoku są dostępne w interfejsie użytkownika?
Wykres potoku jest wyświetlany natychmiast po pomyślnym uruchomieniu aktualizacji potoku. Strzałki reprezentują zależności między zestawami danych w potoku. Domyślnie na stronie szczegółów potoku jest wyświetlana najnowsza aktualizacja tabeli, ale możesz wybrać starsze aktualizacje z menu rozwijanego.
Szczegóły obejmują identyfikator potoku, kod źródłowy, koszt obliczeniowy, wydanie produktu i kanał skonfigurowany dla potoku.
Aby wyświetlić tabelaryczny widok zestawów danych, kliknij kartę Lista . Widok Lista umożliwia wyświetlanie wszystkich zestawów danych w potoku reprezentowanych jako wiersz w tabeli i jest przydatne, gdy potok DAG jest zbyt duży, aby zwizualizować w widoku programu Graph . Zestawy danych wyświetlane w tabeli można kontrolować przy użyciu wielu filtrów, takich jak nazwa zestawu danych, typ i stan. Aby wrócić do wizualizacji DAG, kliknij pozycję Graf.
Użytkownik Uruchom jako jest właścicielem potoku, a aktualizacje potoku są uruchamiane z uprawnieniami tego użytkownika. Aby zmienić run as
użytkownika, kliknij pozycję Uprawnienia i zmień właściciela potoku.
Jak można wyświetlić szczegóły zestawu danych?
Kliknięcie zestawu danych na wykresie potoku lub na liście zestawów danych powoduje wyświetlenie szczegółowych informacji o zestawie danych. Szczegóły obejmują schemat zestawu danych, metryki jakości danych oraz link do kodu źródłowego definiującego zestaw danych.
Wyświetlanie historii aktualizacji
Aby wyświetlić historię i stan aktualizacji potoku, kliknij menu rozwijane Historia aktualizacji na górnym pasku.
Wybierz aktualizację w menu rozwijanym, aby wyświetlić wykres, szczegóły i zdarzenia aktualizacji. Aby powrócić do najnowszej aktualizacji, kliknij pozycję Pokaż najnowszą aktualizację.
Co to jest dziennik zdarzeń tabel delta live?
Dziennik zdarzeń usługi Delta Live Tables zawiera wszystkie informacje związane z potokiem, w tym dzienniki inspekcji, kontrole jakości danych, postęp potoku i pochodzenie danych. Dziennik zdarzeń umożliwia śledzenie, zrozumienie i monitorowanie stanu potoków danych.
Wpisy dziennika zdarzeń można wyświetlić w interfejsie użytkownika usługi Delta Live Tables, interfejsie API usługi Delta Live Tables lub bezpośrednio wysyłając zapytanie do dziennika zdarzeń. Ta sekcja koncentruje się na bezpośrednim wysyłaniu zapytań do dziennika zdarzeń.
Można również zdefiniować akcje niestandardowe do uruchamiania, gdy zdarzenia są rejestrowane, na przykład wysyłanie alertów z użyciem punktów zaczepienia zdarzeń.
Schemat dziennika zdarzeń
W poniższej tabeli opisano schemat dziennika zdarzeń. Niektóre z tych pól zawierają dane JSON, które wymagają analizowania w celu wykonywania niektórych zapytań, takich jak details
pole. Usługa Azure Databricks obsługuje :
operator do analizowania pól JSON. Zobacz operator : (znak dwukropka).
Pole | opis |
---|---|
id |
Unikatowy identyfikator rekordu dziennika zdarzeń. |
sequence |
Dokument JSON zawierający metadane służące do identyfikowania i zamawiania zdarzeń. |
origin |
Dokument JSON zawierający metadane źródła zdarzenia, na przykład dostawca usług w chmurze, region dostawcy usług w chmurze, , lub, aby pokazać miejsce utworzenia potoku lub DBSQL WORKSPACE .pipeline_type pipeline_id user_id |
timestamp |
Godzina zarejestrowania zdarzenia. |
message |
Czytelny dla człowieka komunikat opisujący zdarzenie. |
level |
Typ zdarzenia, na przykład INFO , WARN , ERROR lub METRICS . |
error |
Jeśli wystąpił błąd, szczegóły opisujące błąd. |
details |
Dokument JSON zawierający ustrukturyzowane szczegóły zdarzenia. Jest to pole podstawowe używane do analizowania zdarzeń. |
event_type |
Typ zdarzenia. |
maturity_level |
Stabilność schematu zdarzeń. Możliwe wartości to: - STABLE : Schemat jest stabilny i nie zmieni się.- NULL : Schemat jest stabilny i nie zmieni się. Wartość może być NULL widoczna, jeśli rekord został utworzony przed maturity_level dodaniu pola (wersja 2022.37).- EVOLVING : Schemat nie jest stabilny i może ulec zmianie.- DEPRECATED : Schemat jest przestarzały, a środowisko uruchomieniowe delta Live Tables może w dowolnym momencie przestać produkować to zdarzenie. |
Wykonywanie zapytań względem dziennika zdarzeń
Lokalizacja dziennika zdarzeń i interfejs do wykonywania zapytań w dzienniku zdarzeń zależy od tego, czy potok jest skonfigurowany do używania magazynu metadanych Hive, czy wykazu aparatu Unity.
Magazyn metadanych Hive
Jeśli potok publikuje tabele w magazynie metadanych Hive, dziennik zdarzeń jest przechowywany w /system/events
lokalizacji storage
. Jeśli na przykład skonfigurowano ustawienie potoku storage
jako /Users/username/data
, dziennik zdarzeń jest przechowywany w ścieżce /Users/username/data/system/events
w systemie plików DBFS.
Jeśli ustawienie nie zostało skonfigurowane, domyślna storage
lokalizacja dziennika zdarzeń znajduje się /pipelines/<pipeline-id>/system/events
w systemie plików DBFS. Jeśli na przykład identyfikator potoku to 91de5e48-35ed-11ec-8d3d-0242ac130003
, lokalizacja magazynu to /pipelines/91de5e48-35ed-11ec-8d3d-0242ac130003/system/events
.
Widok można utworzyć, aby uprościć wykonywanie zapytań w dzienniku zdarzeń. Poniższy przykład tworzy widok tymczasowy o nazwie event_log_raw
. Ten widok jest używany w przykładowych zapytaniach dziennika zdarzeń zawartych w tym artykule:
CREATE OR REPLACE TEMP VIEW event_log_raw AS SELECT * FROM delta.`<event-log-path>`;
Zastąp element <event-log-path>
lokalizacją dziennika zdarzeń.
Każde wystąpienie przebiegu potoku jest nazywane aktualizacją. Często chcesz wyodrębnić informacje dotyczące najnowszej aktualizacji. Uruchom następujące zapytanie, aby znaleźć identyfikator najnowszej aktualizacji i zapisać go w widoku tymczasowym latest_update_id
. Ten widok jest używany w przykładowych zapytaniach dziennika zdarzeń zawartych w tym artykule:
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;
Możesz wykonać zapytanie dotyczące dziennika zdarzeń w notesie usługi Azure Databricks lub edytorze SQL. Użyj notesu lub edytora SQL, aby uruchomić przykładowe zapytania dziennika zdarzeń.
Wykaz aparatu Unity
Jeśli potok publikuje tabele w wykazie aparatu Unity, należy użyć event_log
funkcji table valued (TVF), aby pobrać dziennik zdarzeń dla potoku. Dziennik zdarzeń dla potoku można pobrać, przekazując identyfikator potoku lub nazwę tabeli do programu TVF. Aby na przykład pobrać rekordy dziennika zdarzeń dla potoku o identyfikatorze 04c78631-3dd7-4856-b2a6-7d84e9b2638b
:
SELECT * FROM event_log("04c78631-3dd7-4856-b2a6-7d84e9b2638b")
Aby pobrać rekordy dziennika zdarzeń dla potoku utworzonego lub będącego właścicielem tabeli my_catalog.my_schema.table1
:
SELECT * FROM event_log(TABLE(my_catalog.my_schema.table1))
Aby wywołać program TVF, należy użyć udostępnionego klastra lub magazynu SQL Warehouse. Możesz na przykład użyć notesu dołączonego do udostępnionego klastra lub użyć edytora SQL połączonego z usługą SQL Warehouse.
Aby uprościć wykonywanie zapytań dotyczących zdarzeń dla potoku, właściciel potoku może utworzyć widok na event_log
platformie TVF. Poniższy przykład tworzy widok dziennika zdarzeń dla potoku. Ten widok jest używany w przykładowych zapytaniach dziennika zdarzeń zawartych w tym artykule.
Uwaga
TvF event_log
może być wywoływany tylko przez właściciela potoku, a widok utworzony przez event_log
TVF może być odpytywane tylko przez właściciela potoku. Nie można udostępnić widoku innym użytkownikom.
CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");
Zastąp <pipeline-ID>
element unikatowym identyfikatorem potoku Delta Live Tables. Identyfikator można znaleźć w panelu Szczegóły potoku w interfejsie użytkownika tabel delta Live Tables.
Każde wystąpienie przebiegu potoku jest nazywane aktualizacją. Często chcesz wyodrębnić informacje dotyczące najnowszej aktualizacji. Uruchom następujące zapytanie, aby znaleźć identyfikator najnowszej aktualizacji i zapisać go w widoku tymczasowym latest_update_id
. Ten widok jest używany w przykładowych zapytaniach dziennika zdarzeń zawartych w tym artykule:
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;
Wykonywanie zapytań dotyczących informacji o pochodzeniem z dziennika zdarzeń
Zdarzenia zawierające informacje o pochodzenia mają typ flow_definition
zdarzenia . Obiekt details:flow_definition
zawiera i output_dataset
input_datasets
definiuje każdą relację na grafie.
Aby wyodrębnić wejściowe i wyjściowe zestawy danych, możesz użyć następującego zapytania, aby wyświetlić informacje o pochodzenia:
SELECT
details:flow_definition.output_dataset as output_dataset,
details:flow_definition.input_datasets as input_dataset
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_definition'
AND
origin.update_id = latest_update.id
output_dataset |
input_datasets |
---|---|
customers |
null |
sales_orders_raw |
null |
sales_orders_cleaned |
["customers", "sales_orders_raw"] |
sales_order_in_la |
["sales_orders_cleaned"] |
Wykonywanie zapytań dotyczących jakości danych z dziennika zdarzeń
Jeśli zdefiniujesz oczekiwania dotyczące zestawów danych w potoku, metryki jakości danych są przechowywane w details:flow_progress.data_quality.expectations
obiekcie. Zdarzenia zawierające informacje o jakości danych mają typ flow_progress
zdarzenia . Poniższy przykład wykonuje zapytania dotyczące metryk jakości danych dla ostatniej aktualizacji potoku:
SELECT
row_expectations.dataset as dataset,
row_expectations.name as expectation,
SUM(row_expectations.passed_records) as passing_records,
SUM(row_expectations.failed_records) as failing_records
FROM
(
SELECT
explode(
from_json(
details :flow_progress :data_quality :expectations,
"array<struct<name: string, dataset: string, passed_records: int, failed_records: int>>"
)
) row_expectations
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_progress'
AND origin.update_id = latest_update.id
)
GROUP BY
row_expectations.dataset,
row_expectations.name
dataset |
expectation |
passing_records |
failing_records |
---|---|---|---|
sales_orders_cleaned |
valid_order_number |
4083 | 0 |
Monitorowanie listy prac danych przez wykonywanie zapytań w dzienniku zdarzeń
Delta Live Tables śledzi ilość danych znajdujących się na liście prac w details:flow_progress.metrics.backlog_bytes
obiekcie. Zdarzenia zawierające metryki listy prac mają typ flow_progress
zdarzenia . Poniższy przykład wykonuje zapytania dotyczące metryk listy prac dla ostatniej aktualizacji potoku:
SELECT
timestamp,
Double(details :flow_progress.metrics.backlog_bytes) as backlog
FROM
event_log_raw,
latest_update
WHERE
event_type ='flow_progress'
AND
origin.update_id = latest_update.id
Uwaga
Metryki listy prac mogą być niedostępne w zależności od typu źródła danych potoku i wersji środowiska Databricks Runtime.
Monitorowanie rozszerzonych zdarzeń skalowania automatycznego z dziennika zdarzeń dla potoków bez włączonej bezserwerowej
W przypadku potoków DLT, które nie korzystają z przetwarzania bezserwerowego, dziennik zdarzeń przechwytuje zmiany rozmiaru klastra po włączeniu rozszerzonego skalowania automatycznego w potokach. Zdarzenia zawierające informacje o rozszerzonym skalowaniu automatycznym mają typ autoscale
zdarzenia . Informacje o żądaniu zmiany rozmiaru klastra details:autoscale
są przechowywane w obiekcie . W poniższym przykładzie zapytania dotyczące rozszerzonych żądań zmiany rozmiaru klastra automatycznego dla ostatniej aktualizacji potoku:
SELECT
timestamp,
Double(
case
when details :autoscale.status = 'RESIZING' then details :autoscale.requested_num_executors
else null
end
) as starting_num_executors,
Double(
case
when details :autoscale.status = 'SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as succeeded_num_executors,
Double(
case
when details :autoscale.status = 'PARTIALLY_SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as partially_succeeded_num_executors,
Double(
case
when details :autoscale.status = 'FAILED' then details :autoscale.requested_num_executors
else null
end
) as failed_num_executors
FROM
event_log_raw,
latest_update
WHERE
event_type = 'autoscale'
AND
origin.update_id = latest_update.id
Monitorowanie wykorzystania zasobów obliczeniowych
cluster_resources
zdarzenia udostępniają metryki dotyczące liczby miejsc zadań w klastrze, ilości tych miejsc zadań oraz liczby zadań oczekujących na zaplanowanie.
Po włączeniu cluster_resources
rozszerzonego skalowania automatycznego zdarzenia zawierają również metryki dla algorytmu skalowania automatycznego, w tym latest_requested_num_executors
, i optimal_num_executors
. Zdarzenia pokazują również stan algorytmu jako różne stany, takie jak CLUSTER_AT_DESIRED_SIZE
, SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORS
i BLOCKED_FROM_SCALING_DOWN_BY_CONFIGURATION
.
Te informacje można wyświetlić w połączeniu ze zdarzeniami skalowania automatycznego, aby zapewnić ogólny obraz rozszerzonego skalowania automatycznego.
Poniższy przykład wykonuje zapytanie dotyczące historii rozmiaru kolejki zadań dla ostatniej aktualizacji potoku:
SELECT
timestamp,
Double(details :cluster_resources.avg_num_queued_tasks) as queue_size
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
Poniższy przykład wykonuje zapytanie dotyczące historii wykorzystania ostatniej aktualizacji potoku:
SELECT
timestamp,
Double(details :cluster_resources.avg_task_slot_utilization) as utilization
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
Poniższy przykład wykonuje zapytania dotyczące historii liczby funkcji wykonawczych, wraz z metrykami dostępnymi tylko dla rozszerzonych potoków skalowania automatycznego, w tym liczby funkcji wykonawczych żądanych przez algorytm w najnowszym żądaniu, optymalnej liczby funkcji wykonawczych zalecanych przez algorytm na podstawie najnowszych metryk i stanu algorytmu skalowania automatycznego:
SELECT
timestamp,
Double(details :cluster_resources.num_executors) as current_executors,
Double(details :cluster_resources.latest_requested_num_executors) as latest_requested_num_executors,
Double(details :cluster_resources.optimal_num_executors) as optimal_num_executors,
details :cluster_resources.state as autoscaling_state
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
Przeprowadzanie inspekcji potoków tabel na żywo funkcji Delta
Możesz użyć rekordów dziennika zdarzeń usługi Delta Live Tables i innych dzienników inspekcji usługi Azure Databricks, aby uzyskać pełny obraz sposobu aktualizowania danych w usłudze Delta Live Tables.
Usługa Delta Live Tables używa poświadczeń właściciela potoku do uruchamiania aktualizacji. Możesz zmienić używane poświadczenia przez zaktualizowanie właściciela potoku. Usługa Delta Live Tables rejestruje użytkownika na potrzeby akcji w potoku, w tym tworzenia potoku, edycji konfiguracji i wyzwalania aktualizacji.
Zobacz Zdarzenia wykazu aparatu Unity, aby uzyskać informacje o zdarzeniach inspekcji wykazu aparatu Unity.
Wykonywanie zapytań dotyczących akcji użytkownika w dzienniku zdarzeń
Możesz użyć dziennika zdarzeń do inspekcji zdarzeń, na przykład akcji użytkownika. Zdarzenia zawierające informacje o akcjach użytkownika mają typ user_action
zdarzenia .
Informacje o akcji są przechowywane w user_action
obiekcie w details
polu. Użyj następującego zapytania, aby utworzyć dziennik inspekcji zdarzeń użytkownika. Aby utworzyć event_log_raw
widok używany w tym zapytaniu, zobacz Wykonywanie zapytań w dzienniku zdarzeń.
SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
timestamp |
action |
user_name |
---|---|---|
2021-05-20T19:36:03.517+0000 | START |
user@company.com |
2021-05-20T19:35:59.913+0000 | CREATE |
user@company.com |
2021-05-27T00:35:51.971+0000 | START |
user@company.com |
Informacje o środowisku uruchomieniowym
Możesz wyświetlić informacje o czasie wykonywania aktualizacji potoku, na przykład wersję środowiska Uruchomieniowego usługi Databricks dla aktualizacji:
SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
dbr_version |
---|
11,0 |