outputMode
兼容
对于许多存储系统,可能还没有可用的流接收器,但可能已经存在用于批处理查询的数据写入器。使用foreachBatch,可以在每个微批处理的输出上使用批处理数据编写器。
输出流到多端可以使用persist优化性能。
streamingDF.writeStream.foreachBatch {
(batchDF: DataFrame, batchId: Long) => batchd0 .persist()
batchDF.write.format(…).save(…)//位置1
batchDF.write.format(…).save(…)//位置2
batchDF.unpersist()
}
有类型API和无类型API
case class DeviceData(device: String, deviceType: String, signal: Double, time: DateTime)
df.select("device").where("signal > 10") // using untyped APIs
ds.filter(_.signal > 10).map(_.device) // using typed APIs
// Running average signal for each device type
import org.apache.spark.sql.expressions.scalalang.typed
ds.groupByKey(_.deviceType).agg(typed.avg(_.signal)) // using typed API