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 i id.
  • 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:

  1. W wybranym kontenerze ścieżka katalogu to WestEurope/CA/factory1 , a nazwa folderu tabeli delty to device-table.
  2. W ramach wybranego kontenera ścieżka katalogu to Test , a nazwa folderu tabeli delty jest demonstracyjna.
  3. 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:

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]".
  • 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.
  • 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:
    • 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.
  • 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.