【发布时间】:2018-03-07 07:55:45
【问题描述】:
我已使用完整模式对流式数据帧应用聚合。为了将数据框保存在本地,我实现了foreach sink。我能够以文本形式保存数据框。但我需要以 Parquet 格式保存。
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()
我怎样才能做到这一点? 提前致谢!
【问题讨论】:
-
您是否找到了在完整/更新模式下保存到镶木地板的方法?
-
是的,我使用github.com/chtefi/parquet-custom-reader-writer编写了自定义编写器
标签: scala apache-spark parquet spark-structured-streaming