Ograniczenia trybu w czasie rzeczywistym

Na tej stronie opisano znane ograniczenia trybu czasu rzeczywistego w przesyłania strumieniowego ze strukturą.

Ograniczenia źródła

W przypadku kinesis tryb czasu rzeczywistego nie obsługuje trybu sondowania. Ponadto częste ponowne partycjonacje mogą mieć negatywny wpływ na opóźnienie.

Ograniczenia unii

Operator Unii ma pewne ograniczenia:

  • Samodzielna unia nie jest obsługiwana:
    • W przypadku platformy Kafka nie można użyć tego samego obiektu ramki danych źródłowej i ramki danych pochodnych. Aby obejść ten problem, użyj różnych ramek danych odczytywanych z tego samego źródła.
    • W przypadku kinezy nie można połączyć ramek danych pochodzących z tego samego źródła Kinesis z tą samą konfiguracją. Aby obejść ten problem, zamiast używać różnych ramek danych, można przypisać inną consumerName opcję do każdej ramki danych.
  • Operatory stanowe (na przykład , aggregate, deduplicatetransformWithState) nie mogą być zdefiniowane przed Unią.
  • Łączenie ze źródłami wsadowymi nie jest obsługiwane.

mapPartitions Ograniczenie

mapPartitions w języku Scala i podobnych interfejsach API Python (mapInPandas, mapInArrow) przyjmuje iterator całej partycji wejściowej i tworzy iterator całego wyjścia z dowolnym mapowaniem między danymi wejściowymi i wyjściowymi. Te interfejsy API mogą powodować problemy z wydajnością w trybie czasu rzeczywistego, blokując całe dane wyjściowe, co zwiększa opóźnienie. Semantyka tych interfejsów API nie wspiera dobrze propagacji znaków wodnych.

Użyj skalarnych funkcji zdefiniowanych przez użytkownika w połączeniu z przekształcaniem złożonych typów danych lub filter zamiast tego, aby uzyskać podobną funkcjonalność.

transformWithStateInPandas nieobsługiwane

Operator transformWithStateInPandas nie jest obsługiwany w trybie czasu rzeczywistego. Jeśli potrzebujesz niestandardowego przetwarzania stanowego w Python w trybie czasu rzeczywistego, zamiast tego użyj interfejsu API transformWithState opartego na wierszach. Interfejs API oparty na wierszach zapewnia te same funkcje przetwarzania stanowego przy użyciu Row obiektów, a nie ramek danych biblioteki pandas.

Zobacz transformWithState w trybie czasu rzeczywistego aby uzyskać szczegółowe informacje na temat zachowania transformWithState w trybie czasu rzeczywistego oraz przykłady Rejezys aby zapoznać się z Python roboczym przykładem użycia interfejsu API opartego na wierszach.