Udostępnij za pośrednictwem


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

Usługa Azure Data Lake Storage Gen2 sprawia, że usługa Azure Storage stanowi podstawę do tworzenia magazynów danych przedsiębiorstwa na platformie Azure. Usługa Data Lake Storage Gen2 jest przeznaczona do obsługi wielu petabajtów informacji przy zachowaniu setek gigabitów przepływności. Można jej używać do łatwego zarządzania ogromnymi ilościami danych. Podstawową częścią usługi Data Lake Storage Gen2 jest dodanie hierarchicznej przestrzeni nazw do usługi Azure Blob Storage.

Usługa 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 jej użycia, zobacz Przekazywanie, pobieranie i wyświetlanie listy obiektów blob w witrynie Azure Portal.

Uwaga

Aby uzyskać 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 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 obiektu 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 Blob Storage. Podczas przekazywania obiektu blob do usługi Blob Storage 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ć je w zapytaniu z wbudowanymi funkcjami ciągów, takimi jak CONCAT i LTRIM.
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. Aby uzyskać więcej informacji i przykładów, zobacz Zapisywanie w tabeli usługi Delta Lake.
Write mode Tryb zapisu steruje sposobem zapisywania w pliku wyjściowym przez usługę Azure Stream Analytics. Dostarczanie dokładnie jednokrotne ma miejsce tylko wtedy, gdy tryb zapisu to Raz. Aby uzyskać więcej informacji, zapoznaj się z następną sekcją.
Kolumna partycji Opcjonalny. Nazwa {field} danych wyjściowych do partycji. 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ć funkcji i {date} {time}.

Za pomocą partycjonowania niestandardowych obiektów blob można określić jedną niestandardową {field} nazwę 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:
  • Nie jest dozwolona dynamiczna nazwa niestandardowa {field} , jeśli tryb zapisu to Raz.
  • W nazwach pól nie jest uwzględniana wielkość liter. Na przykład usługa nie może odróżnić kolumny ID i kolumny 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/godziny muszą być określone pojedynczo i ujęte w {datetime:\<specifier>} słowo kluczowe. Dozwolone dane wejściowe to \<specifier> , , dMMMmmssddHHHmlub .syyyy Słowo {datetime:\<specifier>} kluczowe 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 znajduje się zapytanie 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:

{Path Prefix Pattern}/schemaHashcode_Guid_Number.extension

Guid W tym miejscu reprezentuje unikatowy identyfikator przypisany do wewnętrznego modułu zapisywania utworzonego 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. Może to być na przykład YYYY/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 jest zapisywana 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.

Dostarczanie dokładnie jednokrotne (publiczna wersja zapoznawcza)

Kompleksowe dostarczanie dokładnie jednokrotne podczas odczytywania danych wejściowych przesyłania strumieniowego oznacza, że przetworzone dane są zapisywane w danych wyjściowych usługi 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. Upraszcza potok przesyłania strumieniowego, nie trzeba implementować logiki deduplikacji ani rozwiązywać problemów z nią.

Write mode

Istnieją dwa sposoby zapisu usługi Stream Analytics na koncie usługi Blob Storage lub Data Lake Storage Gen2. Jednym ze sposobów jest dołączenie wyników do tego samego pliku lub do sekwencji plików, w której będą wyświetlane wyniki. Drugi sposób polega na zapisaniu wszystkich wyników 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 Tryb zapisu dla usługi Delta Lake. Jednak dane wyjściowe usługi Delta Lake zapewniają również dokładnie jednokrotne gwarancje przy użyciu dziennika delta. Nie wymaga partycji czasowej i zapisuje wyniki w sposób ciągły na podstawie parametrów dzielenia na partie zdefiniowanych przez użytkownika.

Uwaga

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

Konfigurowanie

Aby otrzymywać dokładnie jednokrotne dostarczanie dla konta usługi Blob Storage lub Data Lake Storage 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 {date} określonymi parametrami 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ć wartości i {date} {time}. Nazwa dynamiczna nie {field} 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 czasu jest ustawiony na 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 8:00 a 9:00 obejmuje tylko dane od 8:30 do 9:00. 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 lub 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 {date} tokenów i {time} z pól zdarzeń we wzorcu ścieżki. Wybierz format daty, taki jak YYYY/MM/DD, DD/MM/YYYYlub MM-DD-YYYY. HH jest używany dla formatu czasu. Dane wyjściowe obiektu blob można podzielić na partycje za pomocą jednego niestandardowego atrybutu {fieldname} zdarzenia 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 bloków obiektów blob wynosi 50 000.

Ograniczenia

  • Jeśli symbol ukośnika (/) jest używany we wzorcu ścieżki (na przykład /folder2/folder3), puste foldery są tworzone i nie są widoczne w Eksplorator usługi Storage.
  • Usługa 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 Azure Event Grid, są konfigurowane do wyzwalania aktualizacji pliku obiektów blob.
  • Usługa 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 przechodzą do następnej partycji dla danych wyjściowych partycjonowanych przez czas. W niektórych przypadkach, takich jak nieczyste ponowne uruchomienie, możliwe, że brakuje zamykającego nawiasu kwadratowego (]) dla tablicy JSON.