scala - Spark 结构化流中 writeStream 的可用输出格式有哪些

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

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

最佳答案

这是相同的官方 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

    关于scala - Spark 结构化流中 writeStream 的可用输出格式有哪些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55770107/

    相关文章:

    algorithm - 以功能方式遍历树

    mapreduce - 为什么 Spark 比 Hadoop MapReduce 更快

    python - Spark Streaming with Python - 未找到类异常

    java - 无法使用spark sql读取kafka

    apache-kafka - Kafka - Spark Streaming - 仅从 1 个分区读取数据

    generics - 如何指定一个泛型函数,其工作方式就像有 Int、Double 等父类(super class)型一样?

    scala - 如何使用 gatling 将 scala 类导入另一个类?

    scala - 要么T : Call function returning Either only if a certain condition is true (otherwise return right)

    apache-spark - 'pyspark.sql.functions.window' 函数的 'startTime' 参数有什么作用?

    python - 在 PySpark 中使用 toDF() 函数将 RDD 转换为 Dataframe 时的奇怪行为