outputMode

兼容

对于许多存储系统,可能还没有可用的流接收器,但可能已经存在用于批处理查询的数据写入器。使用foreachBatch,可以在每个微批处理的输出上使用批处理数据编写器。
输出流到多端可以使用persist优化性能。

  1. streamingDF.writeStream.foreachBatch {
  2. (batchDF: DataFrame, batchId: Long) => batchd0 .persist()
  3. batchDF.write.format(…).save(…)//位置1
  4. batchDF.write.format(…).save(…)//位置2
  5. batchDF.unpersist()
  6. }

有类型API和无类型API

  1. case class DeviceData(device: String, deviceType: String, signal: Double, time: DateTime)
  2. df.select("device").where("signal > 10") // using untyped APIs
  3. ds.filter(_.signal > 10).map(_.device) // using typed APIs
  4. // Running average signal for each device type
  5. import org.apache.spark.sql.expressions.scalalang.typed
  6. ds.groupByKey(_.deviceType).agg(typed.avg(_.signal)) // using typed API