Wait the light to fall

parquet-format-not-work-in-spark-structured-streaming

焉知非鱼

使用 Spark Structured Streaming 消费 Kafka 数据并实时保存为 parquet 文件时, 出现一个问题, 代码如下:

val res: StreamingQuery = adapterData
  .repartition(sparkConf.numOfPartitions)
  .writeStream
  .format("parquet")
  .option("path", "/parquet_data/enterprise/")
  .partitionBy("vintype", "dt")
  .outputMode(OutputMode.Append())
  .trigger(Trigger.ProcessingTime("1200 seconds"))
  .queryName("enterprise kafka data saving as parquet")
  .start()

问题:

在线上运行一段时间后, 发现 /parquet_data/enterprise/ 目录下不再有新的文件追加了, 查日志没发现原因。隔一段时间就出现一次。临时解决办法是删除并重建 _spark_metadata 目录和 checkpoint 目录。 这样会丢数据。