【问题标题】:Parquet File Output Sink - Spark Structured StreamingParquet 文件输出接收器 - Spark 结构化流式处理
【发布时间】:2019-03-30 04:21:24
【问题描述】:

想知道什么(以及如何修改)会触发 Spark 结构化流式查询(配置了 Parquet 文件输出接收器)以将数据写入 Parquet 文件。我定期提供 Stream 输入数据(使用 StreamReader 读取文件),但它不会将输出写入 Parquet 文件中作为输入提供的每个文件。一旦我给了它一些文件,它往往会写一个 Parquet 文件就好了。

我想知道如何控制它。我希望能够为作为输入提供的每个新文件强制写入 Parquet 文件。任何提示表示赞赏!

注意:我在 Read Stream 调用中将 maxFilesPerTrigger 设置为 1。我还看到流式查询处理单个输入文件,但是输入上的单个文件似乎不会导致流式查询将输出写入 Parquet 文件

【问题讨论】:

    标签: apache-spark spark-structured-streaming


    【解决方案1】:

    经过进一步分析,并使用默认附加模式处理 ForEach 输出接收器,我相信我遇到的问题是附加模式与水印功能的组合。

    重读https://spark.apache.org/docs/2.2.1/structured-streaming-programming-guide.html#starting-streaming-queries后看来,当Append模式与水印集一起使用时,Spark结构化流在水印时间限制过去之前不会将聚合结果写入Result表。追加模式不允许更新记录,所以它必须等待水印过去,以确保不改变行...

    我相信 - Parquet File 接收器不允许更新模式,但是在切换到 ForEach 输出接收器并使用更新模式后,我观察到数据从接收器中传出,正如我预期的那样。基本上对于每条记录,至少有一条记录退出,没有延迟(如之前所观察到的)。

    希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多