Spark结构化流中writeStream的可用输出格式是什么

时间:2019-04-20 03:54:56

标签: scala apache-spark spark-streaming spark-structured-streaming

考虑一般的writeStream调用-具有典型的“控制台” 输出格式:

out.writeStream
  .outputMode("complete")
  .format("console")
  .start()

有哪些替代方案?我实际上注意到默认parquet

DataStreamWriter中:

  /**
   * Specifies the underlying output data source.
   *
   * @since 2.0.0
   */
  def format(source: String): DataStreamWriter[T] = {
    this.source = source
    this
  }

  private var source: String = df.sparkSession.sessionState.conf.defaultDataSourceName

SQLConf中:

  def defaultDataSourceName: String = getConf(DEFAULT_DATA_SOURCE_NAME)

  val DEFAULT_DATA_SOURCE_NAME = buildConf("spark.sql.sources.default")
    .doc("The default data source to use in input/output.")
    .stringConf
    .createWithDefault("parquet")

但是,如何为实木复合地板文件指定 path ?还支持哪些其他格式?它们具有/需要哪些选项?

2 个答案:

答案 0 :(得分:1)

以下是同一文件的官方Spark文档:https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#output-sinks

从spark 2.4.1开始,已支持五种格式:

  • 文件接收器
  • 卡夫卡水槽
  • Foreach接收器
  • 控制台水槽
  • 内存槽

此外,还可以通过扩展Sink Spark的API https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/Sink.scala

来实现她的自定义接收器

答案 1 :(得分:0)

我找到了一个参考文献:https://community.hortonworks.com/questions/89282/structured-streaming-writestream-append-to-file.html

似乎可以使用option("path",path)

enter image description here