Azure Stream Analytics: zapisywanie w tabeli usługi Delta Lake
Usługa Delta Lake to otwarty format, który zapewnia niezawodność, jakość i wydajność magazynom typu data lake. Usługa Azure Stream Analytics umożliwia bezpośrednie zapisywanie danych przesyłanych strumieniowo do tabel usługi Delta Lake bez konieczności pisania pojedynczego wiersza kodu.
Zadanie usługi Stream Analytics można skonfigurować do zapisu za pośrednictwem natywnego łącznika danych wyjściowych usługi Delta Lake do nowej lub wstępnie utworzonej tabeli delty na koncie usługi Azure Data Lake Storage Gen2. Ten łącznik jest zoptymalizowany pod kątem szybkiego pozyskiwania do tabel delty w trybie dołączania. Zapewnia również semantyka dokładnie raz, co gwarantuje, że żadne dane nie zostaną utracone ani zduplikowane. Pozyskiwanie strumieni danych w czasie rzeczywistym z usługi Azure Event Hubs do tabel delta umożliwia wykonywanie interakcyjnych lub wsadowych analiz ad hoc.
Konfiguracja usługi Delta Lake
Aby zapisać dane w usłudze Delta Lake, musisz nawiązać połączenie z kontem usługi Data Lake Storage Gen2. W poniższej tabeli wymieniono właściwości związane z konfiguracją usługi Delta Lake.
Nazwa właściwości | Opis |
---|---|
Format serializacji zdarzeń | Format serializacji danych wyjściowych. Obsługiwane są pliki JSON, CSV, Avro i Parquet. Usługa Delta Lake jest wymieniona jako opcja tutaj. Dane są w formacie Parquet, jeśli wybrano usługę Delta Lake. |
Nazwa ścieżki delty | Ścieżka używana do zapisywania tabeli usługi Delta Lake w określonym kontenerze. Zawiera ona nazwę tabeli. Więcej informacji znajduje się w następnej sekcji. |
Kolumna partycji | Opcjonalny. Nazwa {field} danych wyjściowych do partycji. Obsługiwana jest tylko jedna kolumna partycji. Wartość kolumny musi być string typu. |
Aby wyświetlić pełną listę konfiguracji usługi Data Lake Storage Gen2, zobacz Omówienie usługi Azure Data Lake Storage Gen2.
Nazwa ścieżki delty
Nazwa ścieżki delty służy do określania lokalizacji i nazwy tabeli usługi Delta Lake przechowywanej w usłudze Data Lake Storage Gen2.
Możesz użyć co najmniej jednego segmentu ścieżki, aby zdefiniować ścieżkę do tabeli delta i nazwę tabeli delty. Segment ścieżki to ciąg między kolejnymi znakami ogranicznika (na przykład ukośnikiem /
) odpowiadającym nazwie katalogu wirtualnego.
Nazwa segmentu jest alfanumeryczna i może zawierać spacje, łączniki i podkreślenia. Ostatni segment ścieżki jest używany jako nazwa tabeli.
Ograniczenia dotyczące nazwy ścieżki delty obejmują:
- W nazwach pól nie jest uwzględniana wielkość liter. Na przykład usługa nie może rozróżniać kolumn
ID
iid
. - Nazwa dynamiczna
{field}
nie jest dozwolona. Na przykład{ID}
jest traktowany jako tekst {ID}. - Liczba segmentów ścieżki składających się na nazwę nie może przekraczać 254.
Przykłady
Przykłady nazwy ścieżki delty:
- Przykład 1:
WestUS/CA/factory1/device-table
- Przykład 2:
Test/demo
- Przykład 3:
mytable
Przykładowe pliki wyjściowe:
- W wybranym kontenerze ścieżka katalogu to
WestEurope/CA/factory1
, a nazwa folderu tabeli delty to device-table. - W ramach wybranego kontenera ścieżka katalogu to
Test
, a nazwa folderu tabeli delty jest demonstracyjna. - W ramach wybranego kontenera nazwa folderu tabeli delty to mytable.
Utwórz nową tabelę
Jeśli nie ma jeszcze tabeli usługi Delta Lake o tej samej nazwie i w lokalizacji określonej przez nazwę ścieżki delty, domyślnie usługa Stream Analytics tworzy nową tabelę delty. Ta nowa tabela jest tworzona przy użyciu następującej konfiguracji:
- Składnik zapisywania w wersji 2.
- Czytelnik w wersji 1.
- Tabela jest tylko do dołączania.
- Schemat tabeli jest tworzony ze schematem pierwszego napotkanego rekordu.
Zapisywanie w tabeli
Jeśli tabela usługi Delta Lake już istnieje o tej samej nazwie i w lokalizacji określonej przez nazwę ścieżki delty, domyślnie usługa Stream Analytics zapisuje nowe rekordy w istniejącej tabeli.
Dokładnie jednokrotne dostarczanie
Dziennik transakcji umożliwia usłudze Delta Lake zagwarantowanie dokładnie raz przetwarzania. Usługa Stream Analytics zapewnia również dokładnie jednokrotne dostarczanie podczas wyprowadzania danych do usługi Data Lake Storage Gen2 podczas jednego uruchomienia zadania.
Wymuszanie schematów
Wymuszanie schematu oznacza, że wszystkie nowe operacje zapisu w tabeli są wymuszane tak, aby były zgodne ze schematem tabeli docelowej w czasie zapisu w celu zapewnienia jakości danych.
Wszystkie rekordy danych wyjściowych są przewidywane w schemacie istniejącej tabeli. Jeśli dane wyjściowe są zapisywane w nowej tabeli delty, schemat tabeli zostanie utworzony przy użyciu pierwszego rekordu. Jeśli dane przychodzące mają jedną dodatkową kolumnę w porównaniu z istniejącym schematem tabeli, są zapisywane w tabeli bez dodatkowej kolumny. Jeśli brakuje jednej kolumny danych przychodzących w porównaniu z istniejącym schematem tabeli, jest on zapisywany w tabeli z kolumną o wartości null.
Jeśli nie ma żadnego przecięcia między schematem tabeli delty a schematem rekordu zadania przesyłania strumieniowego, jest to uznawane za wystąpienie błędu konwersji schematu. Nie jest to jedyny przypadek, który jest uważany za błąd konwersji schematu.
W przypadku niepowodzenia konwersji schematu zachowanie zadania jest zgodne z zasadami obsługi błędów danych wyjściowych skonfigurowanymi na poziomie zadania.
Punkty kontrolne dziennika różnicowego
Zadanie usługi Stream Analytics okresowo tworzy punkty kontrolne dziennika delty w formacie V1. Punkty kontrolne dziennika różnicowego to migawki tabeli delty i zazwyczaj zawierają nazwę pliku danych wygenerowanego przez zadanie usługi Stream Analytics. Jeśli liczba plików danych jest duża, prowadzi do dużych punktów kontrolnych, co może powodować problemy z pamięcią w zadaniu usługi Stream Analytics.
Ograniczenia
- Klucz partycji dynamicznej (określanie nazwy kolumny schematu rekordu w ścieżce delty) nie jest obsługiwany.
- Wiele kolumn partycji nie jest obsługiwanych. Jeśli chcesz uzyskać wiele kolumn partycji, zalecamy użycie klucza złożonego w zapytaniu, a następnie określenie go jako kolumny partycji.
- Klucz złożony można utworzyć w zapytaniu. Może to być na przykład
"SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]"
.
- Klucz złożony można utworzyć w zapytaniu. Może to być na przykład
- Zapisywanie w usłudze Delta Lake jest dołączane tylko.
- Sprawdzanie schematu w testowaniu zapytań nie jest dostępne.
- Kompaktowanie małych plików nie jest wykonywane przez usługę Stream Analytics.
- Wszystkie pliki danych są tworzone bez kompresji.
- Typy daty i dziesiętne nie są obsługiwane.
- Zapisywanie w istniejących tabelach składnika zapisywania w wersji 7 lub nowszej z funkcjami składnika zapisywania kończy się niepowodzeniem.
- Przykład: zapisywanie w istniejących tabelach z włączonymi wektorami usuwania kończy się niepowodzeniem.
- Oto wyjątki changeDataFeed i appendOnly Writer Features.
- Gdy zadanie usługi Stream Analytics zapisuje partię danych w usłudze Delta Lake, może wygenerować wiele akcji Dodaj plik. Jeśli dla pojedynczej partii jest generowanych zbyt wiele akcji Dodaj plik, zadanie usługi Stream Analytics może zostać zablokowane.
- Liczba wygenerowanych akcji Dodaj plik jest określana przez wiele czynników:
- Rozmiar partii. Zależy to od woluminu danych i parametrów dzielenia na partie minimalnych wierszy i maksymalnego czasu.
- Kardynalność wartości kolumn partycji partii.
- Aby zmniejszyć liczbę akcji Dodaj plik wygenerowanych dla partii:
- Zmniejsz konfiguracje wsadowe minimalne wiersze i maksymalny czas.
- Zmniejsz kardynalność wartości kolumn partycji, dostosowując dane wejściowe lub wybierając inną kolumnę partycji.
- Liczba wygenerowanych akcji Dodaj plik jest określana przez wiele czynników:
- Zadania usługi Stream Analytics mogą tylko odczytywać i zapisywać punkty kontrolne z jedną częścią V1. Punkty kontrolne z wieloma częściami i format punktu kontrolnego w wersji 2 nie są obsługiwane.