完全モードを使用してストリーミングデータフレームに集約を適用しました。ローカルのデータフレームを保存するために、私はforeachシンクを実装しました。私はテキスト形式でデータフレームを保存することができます。しかし私は寄木張りの形でそれを保存する必要があります。完全な出力モードでストリーミング集約を寄せ木にする方法
val writerForText = new ForeachWriter[Row] {
var fileWriter: FileWriter = _
override def process(value: Row): Unit = {
fileWriter.append(value.toSeq.mkString(","))
}
override def close(errorOrNull: Throwable): Unit = {
fileWriter.close()
}
override def open(partitionId: Long, version: Long): Boolean = {
FileUtils.forceMkdir(new File(s"src/test/resources/${partitionId}"))
fileWriter = new FileWriter(new File(s"src/test/resources/${partitionId}/temp"))
true
}
}
val columnName = "col1"
frame.select(count(columnName),count(columnName),min(columnName),mean(columnName),max(columnName),first(columnName), last(columnName), sum(columnName))
.writeStream.outputMode(OutputMode.Complete()).foreach(writerForText).start()
どうすれば実現できますか? ありがとうございます!
あなたは完全/更新モードで寄木細工して保存する方法を発見しましたか? –
はい、https://github.com/chtefi/parquet-custom-reader-writerを使用してカスタムライターを作成しました –