Zadanie przesyłania strumieniowego blokuje zapisywanie w punkcie kontrolnym

Problem

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

Podczas przeglądania dzienników odnajdywanie zadania zostaje 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

Do przesyłania strumieniowego punktów kontrolnych należy użyć magazynu trwałego.

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