Zadanie przesyłania strumieniowego zostaje zablokowane podczas zapisywania do punktu kontrolnego

Problem

Monitorujesz zadanie przesyłania strumieniowego i zauważasz, że wygląda na to, że utknęło ono podczas przetwarzania danych.

Podczas przeglądania dzienników można wykryć, że zadanie zostanie zablokowane podczas zapisywania danych w punkcie kontrolnym.

INFO HDFSBackedStateStoreProvider: Deleted files older than 381160 for HDFSStateStoreProvider[id = (op=0,part=89),dir = dbfs:/FileStore/R_CHECKPOINT5/state/0/89]:
INFO StateStore: Retrieved reference to StateStoreCoordinator: org.apache.spark.sql.execution.streaming.state.StateStoreCoordinatorRef@56a4cb80
INFO HDFSBackedStateStoreProvider: Deleted files older than 381160 for HDFSStateStoreProvider[id = (op=0,part=37),dir = dbfs:/FileStore/R_CHECKPOINT5/state/0/37]:
INFO StateStore: Retrieved reference to StateStoreCoordinator: org.apache.spark.sql.execution.streaming.state.StateStoreCoordinatorRef@56a4cb80
INFO HDFSBackedStateStoreProvider: Deleted files older than 313920 for HDFSStateStoreProvider[id = (op=0,part=25),dir = dbfs:/FileStore/PYTHON_CHECKPOINT5/state/0/25]:

Przyczyna

Próbujesz użyć lokalizacji punktu kontrolnego w lokalnej ścieżce systemu plików DBFS.

query = streamingInput.writeStream.option("checkpointLocation", "/FileStore/checkpoint").start()

Rozwiązanie

Należy używać magazynu trwałego dla punktów kontrolnych przesyłania strumieniowego.

Nie należy używać systemu plików DBFS do przechowywania punktów kontrolnych przesyłania strumieniowego.