使用Apache ORC文件格式将流保存到文件中时,是否有办法对条目执行更新?而不是在更新条目时多次附加并有效地具有条目。
incomingStreamDF.writeStream
.format("orc")
.option("path", "/mnt/adls/orc")
.option("checkpointLocation", "/mnt/adls/orc/check")
.trigger(ProcessingTime("25 seconds"))
.start()
似乎ORC支持更新,所以有没有办法在writeStream选项中指示条目的键。
唯一可以为您提供此类功能的Update输出模式是输出模式。由于orc格式是a,FileFormat因此必须始终与Append输出模式一起使用。
该问题的解决方案可能是使用全新的DataStreamWriter.foreachBatch运算符(或较旧的DataStreamWriter.foreach)来处理您喜欢的数据(如果您知道如何操作,则可以轻松更新ORC文件中的条目所以)。
foreachBatch(函数:(数据集[T],长)⇒单位):DataStreamWriter [T]
设置要使用提供的流处理查询的输出function。
仅在微批处理执行模式中支持(即,当触发器不连续时)。
将在每个微批中调用提供的函数:
(i)输出行作为数据集
(ii)批次标识符。
batchId可以使用重复数据删除并以事务方式将输出(即提供的数据集)写入外部系统。
对于相同的batchId,输出数据集保证完全相同(假设所有操作在查询中都是确定的)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。