【问题标题】:What are the available output formats for writeStream in Spark structured streamingSpark结构化流中writeStream的可用输出格式有哪些
【发布时间】:2019-09-10 05:05:54
【问题描述】:

考虑一个通用的writeStream 调用 - 使用典型的“console” 输出格式:

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

有哪些选择?我注意到实际上 defaultparquet:

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")

那么,parquet 文件的 路径 是如何指定的呢?支持哪些其他格式以及它们有/需要哪些选项?

【问题讨论】:

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


    【解决方案1】:

    这里是官方 spark 文档:https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#output-sinks

    从 spark 2.4.1 开始,支持五种开箱即用的格式:

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

    除此之外,还可以通过扩展 Spark 的 Sink API 来实现她的自定义接收器:https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/Sink.scala

    【讨论】:

      【解决方案2】:

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

      看来option("path",path)可以用了:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-27
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 2018-07-20
        • 2020-08-11
        • 1970-01-01
        相关资源
        最近更新 更多