Udostępnij za pośrednictwem


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

  1. 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.

  2. Sprawdź dane wejściowe:

    1. Użyj przycisku Przykładowe dane dla każdego danych wejściowych. Pobierz przykładowe dane wejściowe.

    2. Sprawdź przykładowe dane, aby zrozumieć schemat i typy danych.

    3. 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.

  3. 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.

Screenshot that shows the Inputs tile for Azure Stream Analytics.

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.

Screenshot that shows a warning notification about input details.

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:

  1. Zaloguj się w witrynie Azure Portal.

  2. Znajdź centrum zdarzeń.

  3. W obszarze Jednostki wybierz pozycję Event Hubs.

  4. Wybierz centrum zdarzeń według nazwy.

  5. 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 .

  6. Wybierz pozycję + Grupa odbiorców, aby dodać nową grupę odbiorców.

    Screenshot that shows the button for adding a consumer group in Event Hubs.

  7. 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 wielu SELECT instrukcji odwołujących się do tych samych danych wejściowych centrum zdarzeń, każda SELECT instrukcja powoduje utworzenie nowego odbiornika.

  • UNION: W przypadku korzystania z programu UNIONmożna mieć wiele danych wejściowych odwołujących się do tego samego centrum zdarzeń i grupy odbiorców.

  • SELF JOIN: W przypadku korzystania z SELF 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