Dane wyjściowe usługi Blob Storage i Azure Data Lake Gen2 z usługi Azure Stream Analytics

Usługa Data Lake Storage Gen2 sprawia, że usługa Azure Storage stanowi podstawę do tworzenia magazynów danych przedsiębiorstwa na platformie Azure. Zaprojektowana od początku do obsługi wielu petabajtów informacji przy jednoczesnym utrzymaniu setek gigabitów przepływności, usługa Data Lake Storage Gen2 umożliwia łatwe zarządzanie ogromnymi ilościami danych. Podstawową częścią usługi Data Lake Storage Gen2 jest dodanie hierarchicznej przestrzeni nazw do magazynu obiektów blob.

Usługa Azure Blob Storage oferuje ekonomiczne i skalowalne rozwiązanie do przechowywania dużych ilości danych bez struktury w chmurze. Aby zapoznać się z wprowadzeniem do usługi Blob Storage i jego użycia, zobacz Przekazywanie, pobieranie i wyświetlanie listy obiektów blob za pomocą witryny Azure Portal.

Uwaga

Aby uzyskać szczegółowe informacje na temat zachowań specyficznych dla formatów AVRO i Parquet, zobacz powiązane sekcje w przeglądzie.

Konfiguracja danych wyjściowych

W poniższej tabeli wymieniono nazwy właściwości i ich opisy dotyczące tworzenia obiektów blob lub danych wyjściowych usługi Azure Data Lake Storage Gen2.

Nazwa właściwości Opis
Alias danych wyjściowych Przyjazna nazwa używana w zapytaniach do kierowania danych wyjściowych zapytania do tego magazynu obiektów blob.
Konto magazynu Nazwa konta magazynu, na którym wysyłasz dane wyjściowe.
Klucz konta magazynu Klucz tajny skojarzony z kontem magazynu.
Kontener Logiczne grupowanie obiektów blob przechowywanych w usłudze Azure Blob Service. Podczas przekazywania obiektu blob do usługi Blob service należy określić kontener dla tego obiektu blob.

Nazwa kontenera dynamicznego jest opcjonalna. Obsługuje on jedną i tylko jedną dynamiczną {field} nazwę kontenera. Pole musi istnieć w danych wyjściowych i postępować zgodnie z zasadami nazwy kontenera.

Typ danych pola musi mieć wartość string. Aby użyć wielu pól dynamicznych lub połączyć tekst statyczny wraz z polem dynamicznym, możesz zdefiniować go w zapytaniu z wbudowanymi funkcjami ciągów, takimi jak CONCAT, LTRIM itp.
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. Dowiedz się więcej o usłudze Delta Lake
Nazwa ścieżki delty Wymagane, gdy format serializacji zdarzeń to Delta Lake. Ścieżka używana do zapisywania tabeli usługi delta lake w określonym kontenerze. Zawiera ona nazwę tabeli. Więcej szczegółów i przykładów.
Tryb zapisu Tryb zapisu steruje sposobem zapisywania w pliku wyjściowym w usłudze Azure Stream Analytics. Dokładnie jednokrotne dostarczanie odbywa się tylko wtedy, gdy tryb zapisu to Raz. Więcej informacji znajduje się w następnej sekcji.
Kolumna partycji Opcjonalny. Nazwa pola {field} z danych wyjściowych na partycję. Obsługiwana jest tylko jedna kolumna partycji.
Wzorzec ścieżki Wymagane, gdy format serializacji zdarzeń to delta lake. Wzorzec ścieżki pliku używany do zapisywania obiektów blob w określonym kontenerze.

We wzorcu ścieżki można użyć co najmniej jednego wystąpienia zmiennych daty i godziny, aby określić częstotliwość zapisywania obiektów blob: {date}, {time}.

Jeśli tryb zapisu to Raz, musisz użyć zarówno {date} jak i {time}.

Za pomocą partycjonowania niestandardowych obiektów blob można określić jedną niestandardową nazwę {field} z danych zdarzenia do partycjonowania obiektów blob. Nazwa pola jest alfanumeryczna i może zawierać spacje, łączniki i podkreślenia. Ograniczenia dotyczące pól niestandardowych obejmują następujące:
  • Brak dynamicznej niestandardowej nazwy {field} jest dozwolona, jeśli tryb zapisu to Raz.
  • Nazwy pól nie są uwzględniane w wielkości liter. Na przykład usługa nie może odróżnić kolumn ID i kolumn id."
  • Zagnieżdżone pola nie są dozwolone. Zamiast tego użyj aliasu w zapytaniu zadania, aby "spłaścić" pole.
  • Wyrażenia nie mogą być używane jako nazwa pola.

Ta funkcja umożliwia korzystanie z niestandardowych konfiguracji specyfikatora formatu daty/godziny w ścieżce. Niestandardowe formaty daty i godziny muszą być określone pojedynczo, ujęte w słowo kluczowe {datetime:<specyfikr>}. Dozwolone dane wejściowe specyfikatora <> to rrrr, MM, M, dd, dd, HH, H, mm, m, ss lub s. Słowo kluczowe {datetime:<specyfikr>} może być używane wiele razy w ścieżce w celu utworzenia niestandardowych konfiguracji daty/godziny.

Przykłady:
  • Przykład 1: cluster1/logs/{date}/{time}
  • Przykład 2: cluster1/logs/{date}
  • Przykład 3: cluster1/{client_id}/{date}/{time}
  • Przykład 4: cluster1/{datetime:ss}/{myField} gdzie zapytanie to: SELECT data.myField AS myField FROM Input;
  • Przykład 5: cluster1/year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

Sygnatura czasowa utworzonej struktury folderów jest zgodna z czasem UTC, a nie czasem lokalnym. System.Timestamp to czas używany przez cały czas partycjonowania na podstawie czasu.

Nazewnictwo plików używa następującej konwencji:

{Wzorzec prefiksu ścieżki}/schemaHashcode_Guid_Number.extension

Tutaj guid reprezentuje unikatowy identyfikator przypisany do wewnętrznego modułu zapisywania, który jest tworzony do zapisu w pliku obiektów blob. Liczba reprezentuje indeks bloku obiektów blob.

Przykładowe pliki wyjściowe:
  • Myoutput/20170901/00/45434_gguid_1.csv
  • Myoutput/20170901/01/45434_gguid_1.csv

Aby uzyskać więcej informacji na temat tej funkcji, zobacz Partycjonowanie niestandardowych obiektów blob w usłudze Azure Stream Analytics.
Format daty Wymagane, gdy format serializacji zdarzeń to delta lake. Jeśli token daty jest używany w ścieżce prefiksu, możesz wybrać format daty, w którym są zorganizowane pliki. Przykład: RRRR/MM/DD
Format godziny Wymagane, gdy format serializacji zdarzeń to delta lake. Jeśli token czasu jest używany w ścieżce prefiksu, określ format czasu, w którym są zorganizowane pliki.
Minimalna liczba wierszy Liczba minimalnych wierszy na partię. W przypadku programu Parquet każda partia tworzy nowy plik. Bieżąca wartość domyślna to 2000 wierszy, a dozwolona wartość maksymalna to 10 000 wierszy.
Maksymalny czas Maksymalny czas oczekiwania na partię. Po tym czasie partia zostanie zapisana w danych wyjściowych, nawet jeśli minimalne wymagania dotyczące wierszy nie zostaną spełnione. Bieżąca wartość domyślna to 1 minuta, a dozwolona wartość maksymalna to 2 godziny. Jeśli dane wyjściowe obiektu blob mają częstotliwość wzorca ścieżki, czas oczekiwania nie może być wyższy niż zakres czasu partycji.
Kodowanie Jeśli używasz formatu CSV lub JSON, należy określić kodowanie. UTF-8 jest obecnie jedynym obsługiwanym formatem kodowania.
Ogranicznik Dotyczy tylko serializacji CSV. Usługa Stream Analytics obsługuje wiele typowych ograniczników do serializacji danych CSV. Obsługiwane wartości to przecinek, średnik, spacja, karta i pionowy pasek.
Formatuj Dotyczy tylko serializacji JSON. Linia oddzielona określa, że dane wyjściowe są formatowane przez każdy obiekt JSON oddzielony przez nowy wiersz. W przypadku wybrania pozycji Linia oddzielona kod JSON jest odczytywany jeden obiekt naraz. Cała zawartość sama w sobie nie byłaby prawidłowym plikiem JSON. Tablica określa, że dane wyjściowe są formatowane jako tablica obiektów JSON. Ta tablica jest zamykana tylko wtedy, gdy zadanie zostanie zatrzymane lub usługa Stream Analytics została przeniesiona do następnego przedziału czasu. Ogólnie rzecz biorąc, najlepiej używać JSON rozdzielanego wierszem, ponieważ nie wymaga żadnej specjalnej obsługi, podczas gdy plik wyjściowy jest nadal zapisywany.

Dokładnie jednokrotne dostarczanie (publiczna wersja zapoznawcza)

Kompleksowe dostarczanie dokładnie raz podczas odczytywania danych wejściowych przesyłania strumieniowego oznacza, że przetworzone dane zostaną zapisane w danych wyjściowych usługi Azure Data Lake Storage Gen2 raz bez duplikatów. Po włączeniu tej funkcji zadanie usługi Stream Analytics gwarantuje brak utraty danych i brak duplikatów generowanych jako dane wyjściowe w ramach ponownego uruchomienia zainicjowanego przez użytkownika z ostatniego czasu wyjściowego. Znacznie upraszcza potok przesyłania strumieniowego, nie trzeba implementować logiki deduplikacji i rozwiązywać problemy z nią.

Tryb zapisu

Istnieją dwa sposoby zapisu usługi Stream Analytics na koncie usługi Blob Storage lub ADLS Gen2. Jednym z nich jest dołączanie wyników do tego samego pliku lub do sekwencji plików, w której pojawiają się wyniki. Drugi to zapis po wszystkich wynikach partycji czasowej, gdy wszystkie dane partycji czasowej są dostępne. Dokładnie jednokrotne dostarczanie jest włączone, gdy tryb zapisu to Raz.

Nie ma opcji trybu zapisu dla usługi Delta Lake. Jednak dane wyjściowe usługi Delta Lake zapewniają również dokładnie jednokrotne gwarancje korzystania z dziennika delty. Nie wymaga partycji czasowej i będzie zapisywać wyniki w sposób ciągły na podstawie zdefiniowanych przez użytkownika parametrów przetwarzania wsadowego.

Uwaga

Jeśli wolisz nie używać funkcji w wersji zapoznawczej do dokładnie raz dostarczenia, wybierz pozycję Dołącz jako wyniki.

Konfigurowanie

Aby odbierać dokładnie jednokrotne dostarczanie dla konta usługi Blob Storage lub USŁUGI ADLS Gen2, należy skonfigurować następujące ustawienia:

  • Wybierz pozycję Raz po udostępnieniu wszystkich wyników partycji czasu dla trybu zapisu.
  • Podaj wzorzec ścieżki z określonymi elementami {date} i {time}.
  • Określ format daty i godziny.

Ograniczenia

  • Podstream nie jest obsługiwany.
  • Wzorzec ścieżki staje się wymaganą właściwością i musi zawierać zarówno {date} jak i {time}. Nazwa niestandardowego {field} nie jest dozwolona. Dowiedz się więcej na temat niestandardowego wzorca ścieżki.
  • Jeśli zadanie jest uruchamiane w czasie niestandardowym przed lub po ostatnim czasie danych wyjściowych, istnieje ryzyko zastąpienia pliku. Na przykład gdy format godziny to HH, plik jest generowany co godzinę. Jeśli zatrzymasz zadanie o godzinie 8:15 i uruchom ponownie zadanie o godzinie 8:30, plik wygenerowany między godziną 8:00 a 9:00 obejmuje tylko dane od 8:30 do 9 rano. Dane od 8:00 do 8:15 zostaną utracone, ponieważ zostaną zastąpione.

Pliki wyjściowe obiektu blob

Gdy używasz usługi Blob Storage jako danych wyjściowych, nowy plik zostanie utworzony w obiekcie blob w następujących przypadkach:

  • Plik przekracza maksymalną liczbę dozwolonych bloków (obecnie 50 000). Maksymalna dozwolona liczba bloków może być osiągana bez osiągnięcia maksymalnego dozwolonego rozmiaru obiektu blob. Jeśli na przykład szybkość danych wyjściowych jest wysoka, można zobaczyć więcej bajtów na blok, a rozmiar pliku jest większy. Jeśli szybkość danych wyjściowych jest niska, każdy blok ma mniej danych, a rozmiar pliku jest mniejszy.
  • Istnieje zmiana schematu w danych wyjściowych, a format danych wyjściowych wymaga stałego schematu (CSV, Avro, Parquet).
  • Zadanie jest uruchamiane ponownie, zewnętrznie przez użytkownika, który go zatrzymuje i uruchamia lub wewnętrznie w celu konserwacji systemu lub odzyskiwania błędów.
  • Zapytanie jest w pełni partycjonowane, a nowy plik jest tworzony dla każdej partycji wyjściowej. Pochodzi z użycia partition BY lub natywnej równoległości wprowadzonej w poziomie zgodności 1.2
  • Użytkownik usuwa plik lub kontener konta magazynu.
  • Dane wyjściowe są partycjonowane przy użyciu wzorca prefiksu ścieżki, a nowy obiekt blob jest używany, gdy zapytanie przechodzi do następnej godziny.
  • Dane wyjściowe są partycjonowane przez pole niestandardowe, a nowy obiekt blob jest tworzony na klucz partycji, jeśli nie istnieje.
  • Dane wyjściowe są partycjonowane przez pole niestandardowe, w którym kardynalność klucza partycji przekracza 8000, a nowy obiekt blob jest tworzony na klucz partycji.

Partycjonowanie

W przypadku klucza partycji użyj tokenów {date} i {time} z pól zdarzeń we wzorcu ścieżki. Wybierz format daty, taki jak RRRR/MM/DD, DD/MM/RRRR LUB MM-DD-RRRRRR. HH jest używany dla formatu czasu. Dane wyjściowe obiektu blob można podzielić na partycje za pomocą pojedynczego niestandardowego atrybutu zdarzenia {fieldname} lub {datetime:<specifier>}. Liczba składników zapisywania danych wyjściowych jest zgodna z partycjonowaniem wejściowym dla w pełni równoległych zapytań.

Rozmiar partii wyjściowej

Aby uzyskać maksymalny rozmiar komunikatu, zobacz Limity usługi Azure Storage. Maksymalny rozmiar bloku obiektów blob wynosi 4 MB, a maksymalna liczba obiektów blob to 50 000.

Ograniczenia

  • Jeśli symbol / ukośnika do przodu jest używany we wzorcu ścieżki (np. /folder2/folder3), puste foldery są tworzone i nie są widoczne w Eksplorator usługi Storage
  • Usługa Azure Stream Analytics dołącza do tego samego pliku w przypadkach, gdy nowy plik obiektu blob nie jest potrzebny. Może to spowodować wygenerowanie większej liczby wyzwalaczy, jeśli usługi platformy Azure, takie jak Event Grid, są skonfigurowane do wyzwalania aktualizacji plików obiektów blob.
  • Usługa Azure Stream Analytics domyślnie dołącza do obiektu blob. Gdy format danych wyjściowych jest tablicą Json, kończy on plik po zamknięciu lub gdy dane wyjściowe są przenosine do następnej partycji dla partycjonowanych danych wyjściowych czasu. W niektórych przypadkach, takich jak nieczyste ponowne uruchomienie, istnieje możliwość, że brakuje zamykającego "]" dla tablicy json.

Następne kroki