开发者社区> 问答> 正文

如何更新ORC流媒体接收器中的现有条目?

使用Apache ORC文件格式将流保存到文件中时,是否有办法对条目执行更新?而不是在更新条目时多次附加并有效地具有条目。

incomingStreamDF.writeStream
.format("orc")
.option("path", "/mnt/adls/orc")
.option("checkpointLocation", "/mnt/adls/orc/check")
.trigger(ProcessingTime("25 seconds"))
.start()
似乎ORC支持更新,所以有没有办法在writeStream选项中指示条目的键。

展开
收起
社区小助手 2018-12-12 18:21:16 1664 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    唯一可以为您提供此类功能的Update输出模式是输出模式。由于orc格式是a,FileFormat因此必须始终与Append输出模式一起使用。

    该问题的解决方案可能是使用全新的DataStreamWriter.foreachBatch运算符(或较旧的DataStreamWriter.foreach)来处理您喜欢的数据(如果您知道如何操作,则可以轻松更新ORC文件中的条目所以)。

    foreachBatch(函数:(数据集[T],长)⇒单位):DataStreamWriter [T]

    设置要使用提供的流处理查询的输出function。

    仅在微批处理执行模式中支持(即,当触发器不连续时)。

    将在每个微批中调用提供的函数:

    (i)输出行作为数据集

    (ii)批次标识符。

    batchId可以使用重复数据删除并以事务方式将输出(即提供的数据集)写入外部系统。

    对于相同的batchId,输出数据集保证完全相同(假设所有操作在查询中都是确定的)。

    2019-07-17 23:20:16
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
千万Feeds流系统的存储技术揭秘 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载