在Apache Spark中更新到Phoenix表

时间:2019-01-30 18:33:07

标签: scala apache-spark phoenix

寻找是否有人通过Apache Spark在Phoenix上执行upserts(追加/更新/部分插入/更新)。我可以看到,按照Phoenix documentation保存,SaveMode.Overwrite仅受支持-满载时将被覆盖。我尝试更改引发错误的模式。

当前,我们正在运行* .hql作业来执行此操作,现在我们想在Spark Scala中重写它们。感谢您分享宝贵的意见。

1 个答案:

答案 0 :(得分:0)

虽然Phoenix连接器确实仅支持SaveMode.Overwrite,但实现不符合Spark标准which states that

  

覆盖模式意味着将DataFrame保存到数据源时,如果已经存在数据/表,则预期现有数据将被DataFrame的内容覆盖

如果选中the source,您会看到saveToPhoenix只是通过saveAsNewAPIHadoopFilewhich来调用PhoenixOutputFormat

  

内部为您构建UPSERT查询

换句话说,使用Phoenix Connector的SaveMode.Overwrite实际上是UPSERT