как я могу удалить старые данные, созданные Spark Structured Streaming (Spark 2.4.5)?
У меня есть данные на HDFS в формате паркет / авро ( не Delta ), то есть создается Spark Structured Streaming и разбивается по времени (год, месяц, день месяца, час).
Данные создаются следующим образом:
query = df.writeStream.format("avro").partitionBy("year", "month", "day", "hour").outputMode("append").option("checkpointLocation", "/data/avro.cp").start("/data/avro")
As В результате у меня следующая структура папок разделов:
./year=2020/month=3/day=13/hour=12
./year=2020/month=3/day=13/hour=13
./year=2020/month=3/day=13/hour=14
./year=2020/month=3/day=13/hour=15
./year=2020/month=3/day=13/hour=16
Как удалить старые данные, например, старше года = 2020, месяца = 2, дня = 13, часа = 14?
Простое удаление соответствующих папок
./year=2020/month=3/day=13/hour=12
./year=2020/month=3/day=13/hour=13
вызывает исключение при чтении пакета данных из файловой системы:
df = spark.read.format("avro").load("/data/avro")
java.io.FileNotFoundException: File file:/data/avro/year=2020/month=3/day=13/hour=12/part-00000-0cc84e65-3f49-4686-85e3-1ecf48952794.c000.avro does not exist
Как я выяснил, это как-то связано с папкой _spark_metadata
, которая используется контрольно-пропускными пунктами.
Благодарим Вас за помощь.