寻找是否有人通过Apache Spark在Phoenix上执行upserts(追加/更新/部分插入/更新)。我可以看到,按照Phoenix documentation保存,SaveMode.Overwrite
仅受支持-满载时将被覆盖。我尝试更改引发错误的模式。
当前,我们正在运行* .hql作业来执行此操作,现在我们想在Spark Scala中重写它们。感谢您分享宝贵的意见。
答案 0 :(得分:0)
虽然Phoenix连接器确实仅支持SaveMode.Overwrite
,但实现不符合Spark标准which states that:
覆盖模式意味着将DataFrame保存到数据源时,如果已经存在数据/表,则预期现有数据将被DataFrame的内容覆盖
如果选中the source,您会看到saveToPhoenix
只是通过saveAsNewAPIHadoopFile
,which来调用PhoenixOutputFormat
内部为您构建UPSERT查询
换句话说,使用Phoenix Connector的SaveMode.Overwrite
实际上是UPSERT
。