pyspark结构化流式分批写入拼花地板

时间:2019-04-26 02:06:37

标签: pyspark spark-streaming spark-structured-streaming spark-streaming-kafka

我正在对Spark结构化的流数据帧进行一些转换。我将转换后的数据帧存储为hdfs中的实木复合地板文件。现在,我希望对hdfs的写入应分批进行,而不是先转换整个数据框,然后再存储数据框。

1 个答案:

答案 0 :(得分:0)

这是一个镶木地板接收器示例:

# parquet sink example
targetParquetHDFS = sourceTopicKAFKA
    .writeStream
    .format("parquet") # can be "orc", "json", "csv", etc.
    .outputMode("append") # can only be "append"
    .option("path", "path/to/destination/dir")
    .partitionBy("col") # if you need to partition
    .trigger(processingTime="...") # "mini-batch" frequency when data is outputed to sink
    .option("checkpointLocation", "path/to/checkpoint/dir") # write-ahead logs for recovery purposes
    .start()
targetParquetHDFS.awaitTermination()

更多详细信息:

Kafka集成:https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html

SS编程指南:https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#output-sinks

已添加

好吧……我在回复中添加了一些内容,以澄清您的问题。

SS有一些不同的 触发器类型

https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#triggers

默认:下一个触发器在上一个触发器完成处理后发生

固定间隔.trigger(processingTime='10 seconds') 因此10秒触发将在00:10、00:20、00:30触发

一次:一次.trigger(once=True)

处理所有可用数据

连续/固定检查点间隔 =>最好查看编程指南文档

因此,在您的Kafka示例中,SS可以通过“ 默认”或“ 固定间隔”触发器或一个微批处理事件时间时间戳上的数据Kafka源主题中所有可用数据的“ 一次性”处理。