Rozwiązywanie problemów z połączeniami wejściowymi
W tym artykule opisano typowe problemy z połączeniami wejściowymi usługi Azure Stream Analytics, sposobami rozwiązywania tych problemów i sposobu ich rozwiązywania.
Wiele kroków rozwiązywania problemów wymaga włączenia dzienników zasobów dla zadania usługi Stream Analytics. Jeśli nie masz włączonych dzienników zasobów, zobacz Rozwiązywanie problemów z usługą Azure Stream Analytics przy użyciu dzienników zasobów.
Zadanie nie odbiera zdarzeń wejściowych
Sprawdź łączność z danymi wejściowymi i wyjściowymi. Użyj przycisku Test Połączenie ion dla poszczególnych danych wejściowych i wyjściowych.
Sprawdź dane wejściowe:
Użyj przycisku Przykładowe dane dla każdego danych wejściowych. Pobierz przykładowe dane wejściowe.
Sprawdź przykładowe dane, aby zrozumieć schemat i typy danych.
Sprawdź metryki usługi Azure Event Hubs, aby upewnić się, że zdarzenia są wysyłane. Metryki komunikatów powinny być większe niż zero, jeśli usługa Event Hubs odbiera komunikaty.
Upewnij się, że wybrano zakres czasu w podglądzie danych wejściowych. Wybierz pozycję Wybierz zakres czasu, a następnie wprowadź przykładowy czas trwania przed przetestowaniem zapytania.
Ważne
W przypadku zadań usługi Azure Stream Analytics, które nie są wstrzykiwane w sieci, nie polegaj na źródłowym adresie IP połączeń pochodzących z usługi Stream Analytics w żaden sposób. Mogą to być publiczne lub prywatne adresy IP w zależności od operacji infrastruktury usług, które są wykonywane od czasu do czasu.
Źle sformułowane zdarzenia wejściowe powodują błędy deserializacji
Problemy z deserializacji występują, gdy strumień wejściowy zadania usługi Stream Analytics zawiera źle sformułowane komunikaty. Na przykład brak nawiasu lub nawiasu klamrowego w obiekcie JSON lub niepoprawny format sygnatury czasowej w polu czasu może spowodować źle sformułowany komunikat.
Gdy zadanie usługi Stream Analytics odbiera źle sformułowany komunikat z danych wejściowych, odrzuca komunikat i powiadamia o ostrzeżeniu. Na kafelku Dane wejściowe zadania usługi Stream Analytics zostanie wyświetlony symbol ostrzegawczy. Symbol ostrzeżenia istnieje tak długo, jak zadanie jest w stanie uruchomienia.
Włącz dzienniki zasobów, aby wyświetlić szczegóły błędu i komunikat (ładunek), który spowodował błąd. Istnieje wiele powodów, dla których mogą wystąpić błędy deserializacji. Aby uzyskać więcej informacji na temat określonych błędów deserializacji, zobacz Błędy danych wejściowych. Jeśli dzienniki zasobów nie są włączone, w witrynie Azure Portal zostanie wyświetlone krótkie powiadomienie.
Jeśli ładunek komunikatu jest większy niż 32 KB lub jest w formacie binarnym, uruchom kod CheckMalformedEvents.cs dostępny w repozytorium przykładów usługi GitHub. Ten kod odczytuje przesunięcie identyfikatora partycji i wyświetla dane znajdujące się w tym przesunięciu.
Inne typowe przyczyny błędów deserializacji danych wejściowych to:
- Kolumna całkowita zawierająca wartość większą niż
9223372036854775807
. - Ciągi zamiast tablicy obiektów lub obiektów rozdzielonych wierszami. Prawidłowy przykład:
*[{'a':1}]*
. Nieprawidłowy przykład:*"'a' :1"*
. - Używanie obiektu blob przechwytywania usługi Event Hubs w formacie Avro jako danych wejściowych w zadaniu.
- Posiadanie dwóch kolumn w pojedynczym zdarzeniu wejściowym, które różni się tylko w przypadku. Przykład:
*column1*
i*COLUMN1*
.
Zmiany liczby partycji
Liczbę partycji centrów zdarzeń można zmienić. Jeśli liczba partycji centrum zdarzeń zostanie zmieniona, należy zatrzymać i ponownie uruchomić zadanie usługi Stream Analytics.
Gdy liczba partycji centrum zdarzeń zostanie zmieniona, gdy zadanie jest uruchomione, pojawia się następujący błąd: Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException
.
Zadanie przekracza maksymalne odbiorniki usługi Event Hubs
Najlepszym rozwiązaniem w przypadku korzystania z usługi Event Hubs jest użycie wielu grup odbiorców na potrzeby skalowalności zadań. Liczba czytelników w zadaniu usługi Stream Analytics dla określonych danych wejściowych wpływa na liczbę czytelników w pojedynczej grupie odbiorców.
Dokładna liczba odbiorników jest oparta na wewnętrznych szczegółach implementacji logiki topologii skalowania w poziomie. Liczba nie jest uwidoczniona zewnętrznie. Liczba czytelników może ulec zmianie po uruchomieniu lub uaktualnieniu zadania.
W przypadku przekroczenia maksymalnej liczby odbiorników zostanie wyświetlony następujący komunikat o błędzie. Komunikat zawiera listę istniejących połączeń wykonanych z usługą Event Hubs w grupie odbiorców. Tag AzureStreamAnalytics
wskazuje, że połączenia pochodzą z usługi przesyłania strumieniowego platformy Azure.
The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hubs Receivers.
The following information may be helpful in identifying the connected receivers: Exceeded the maximum number of allowed receivers per partition in a consumer group which is 5. List of connected receivers –
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1,
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1,
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1,
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1,
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1.
Uwaga
Gdy liczba czytelników zmienia się podczas uaktualniania zadania, ostrzeżenia przejściowe są zapisywane w dziennikach inspekcji. Zadania usługi Stream Analytics są automatycznie odzyskiwane po tych przejściowych problemach.
Aby dodać nową grupę odbiorców w wystąpieniu usługi Event Hubs, wykonaj następujące kroki:
Zaloguj się w witrynie Azure Portal.
Znajdź centrum zdarzeń.
W obszarze Jednostki wybierz pozycję Event Hubs.
Wybierz centrum zdarzeń według nazwy.
Na stronie Wystąpienie usługi Event Hubs w obszarze Jednostki wybierz pozycję Grupy odbiorców. Zostanie wyświetlona grupa odbiorców o nazwie $Default .
Wybierz pozycję + Grupa odbiorców, aby dodać nową grupę odbiorców.
Po utworzeniu danych wejściowych w zadaniu usługi Stream Analytics w celu wskazania centrum zdarzeń określono tam grupę odbiorców. Usługa Event Hubs używa $Default , jeśli nie określono żadnej grupy odbiorców. Po utworzeniu grupy odbiorców zmodyfikuj dane wejściowe centrum zdarzeń w zadaniu usługi Stream Analytics i określ nazwę nowej grupy odbiorców.
Czytelnicy na partycję przekraczają limit usługi Event Hubs
Jeśli składnia zapytań przesyłania strumieniowego odwołuje się do tego samego zasobu dla danych wejściowych centrum zdarzeń wielokrotnie, aparat zadań może używać wielu czytników na zapytanie z tej samej grupy odbiorców. Jeśli istnieje zbyt wiele odwołań do tej samej grupy odbiorców, zadanie może przekroczyć limit pięciu i zgłosić błąd. W takich okolicznościach można dodatkowo podzielić przy użyciu wielu danych wejściowych w wielu grupach odbiorców.
Scenariusze, w których liczba czytelników na partycję przekracza limit pięciu usług Event Hubs, obejmują:
Wiele
SELECT
instrukcji: jeśli używasz wieluSELECT
instrukcji odwołujących się do tych samych danych wejściowych centrum zdarzeń, każdaSELECT
instrukcja powoduje utworzenie nowego odbiornika.UNION
: W przypadku korzystania z programuUNION
można mieć wiele danych wejściowych odwołujących się do tego samego centrum zdarzeń i grupy odbiorców.SELF JOIN
: W przypadku korzystania zSELF JOIN
operacji można wielokrotnie odwoływać się do tego samego centrum zdarzeń.
Poniższe najlepsze rozwiązania mogą pomóc w ograniczeniu scenariuszy, w których liczba czytelników na partycję przekracza limit pięciu usług Event Hubs.
Podziel zapytanie na wiele kroków przy użyciu klauzuli WITH
Klauzula WITH
określa tymczasowy nazwany zestaw wyników, do którego może odwoływać się klauzula FROM
w zapytaniu. Należy zdefiniować klauzulę WITH
w zakresie wykonywania pojedynczej SELECT
instrukcji.
Na przykład zamiast tego zapytania:
SELECT foo
INTO output1
FROM inputEventHub
SELECT bar
INTO output2
FROM inputEventHub
…
Użyj tego zapytania:
WITH data AS (
SELECT * FROM inputEventHub
)
SELECT foo
INTO output1
FROM data
SELECT bar
INTO output2
FROM data
…
Upewnij się, że dane wejściowe są powiązane z różnymi grupami odbiorców
W przypadku zapytań, w których są połączone trzy lub więcej danych wejściowych z tą samą grupą odbiorców usługi Event Hubs, utwórz oddzielne grupy odbiorców. To zadanie wymaga utworzenia dodatkowych danych wejściowych usługi Stream Analytics.
Tworzenie oddzielnych danych wejściowych z różnymi grupami odbiorców
Możesz utworzyć oddzielne dane wejściowe z różnymi grupami odbiorców dla tego samego centrum zdarzeń. W poniższym przykładzie UNION
zapytania dane InputOne i InputTwo odwołują się do tego samego źródła usługi Event Hubs. Każde zapytanie może mieć oddzielne dane wejściowe z różnymi grupami odbiorców. Zapytanie UNION
jest tylko jednym przykładem.
WITH
DataOne AS
(
SELECT * FROM InputOne
),
DataTwo AS
(
SELECT * FROM InputTwo
),
SELECT foo FROM DataOne
UNION
SELECT foo FROM DataTwo
Czytelnicy na partycję przekraczają limit usługi IoT Hub
Zadania usługi Stream Analytics używają wbudowanego punktu końcowego zgodnego z usługą Event Hubs w usłudze Azure IoT Hub do łączenia i odczytywania zdarzeń z usługi IoT Hub. Jeśli czytelnicy na partycję przekraczają limity usługi IoT Hub, możesz użyć rozwiązań dla usługi Event Hubs , aby rozwiązać ten problem. Grupę odbiorców dla wbudowanego punktu końcowego można utworzyć za pośrednictwem sesji punktu końcowego portalu usługi IoT Hub lub zestawu SDK usługi IoT Hub.
Uzyskaj pomoc
Aby uzyskać dalszą pomoc, wypróbuj stronę pytań i pytań firmy Microsoft dla usługi Azure Stream Analytics.
Następne kroki
- Wprowadzenie do usługi Azure Stream Analytics
- Analizowanie fałszywych danych połączeń za pomocą usługi Stream Analytics i wizualizowanie wyników na pulpicie nawigacyjnym usługi Power BI
- Skalowanie zadania usługi Azure Stream Analytics w celu zwiększenia przepływności
- Dokumentacja języka zapytań usługi Azure Stream Analytics
- Azure Stream Analytics Management REST API