scala - 无法使用 Spark Structured Streaming 在 Parquet 文件中写入数据

标签 scala apache-spark spark-structured-streaming

我有一个 Spark 结构化流:

val df = spark
      .readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "localhost:9092")
      .option("startingOffsets", "earliest")
      .option("endingOffsets", "latest")
      .option("subscribe", "topic")
      .load()

我想使用 DataStreamWriter 将数据写入文件系统,
val query = df
          .writeStream
          .outputMode("append")
          .format("parquet")
          .start("data")

但是在 data 中创建了零文件文件夹。只有 _spark_metadata正在创建。

但是,当 format 时,我可以在控制台上看到数据是 console :
val query = df
          .writeStream
          .outputMode("append")
          .format("console")
          .start()

+--------------------+------------------+------------------+
|                time|              col1|              col2|
+--------------------+------------------+------------------+
|49368-05-11 20:42...|0.9166470338147503|0.5576946794171861|
+--------------------+------------------+------------------+

我无法理解其背后的原因。

Spark - 2.1.0

最佳答案

我有一个类似的问题,但出于不同的原因,在这里发布以防有人遇到同样的问题。将输出流以带水印的附加模式写入文件时,结构化流有一个有趣的行为,即在时间段早于水印时间之前,它实际上不会写入任何数据。如果您正在测试结构化流媒体并且有一个小时长的水印,那么至少一个小时内您将看不到任何输出。

关于scala - 无法使用 Spark Structured Streaming 在 Parquet 文件中写入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44187987/

相关文章:

scala - 将 MongoDB 文档映射到具有类型但没有嵌入文档的案例类

java - 将 Scala 并发持续时间添加到 DateTime

scala - 鳞状的jdbc。在不显式依赖 Scalikejdbc 和 session 的情况下管理事务

java - 从 Spark 中的压缩中读取整个文本文件

scala - 监听器异常 : Mkdirs failed to create/tmp/temporary ( full permission given to the dir. )

apache-spark - 结构化流错误 py4j.protocol.Py4JNetworkError : Answer from Java side is empty

scala - Scala中元组的通用getter方法可以保留动态类型?

azure - Spark 将检索到的数据保存在 Azure Databricks 上的什么位置?

azure - Spark - 如何从数据帧列中获取带有父文件夹的文件名

apache-spark - 为什么Complete输出模式需要聚合?