【问题标题】:Does Phoenix-Spark API have a checkAndPut method like HBase API?Phoenix-Spark API 是否有类似 HBase API 的 checkAndPut 方法?
【发布时间】:2015-09-27 08:22:49
【问题描述】:

我正在使用 Spark 1.3、HBase 1.1 和 Phoenix 4.4。我的代码中有这个:

val dataframe = sqlContext.createDataFrame(rdd, schema)
dataframe.save("org.apache.phoenix.spark", SaveMode.Overwrite,
    Map("table" -> "TEST_SCHEMA.TEST_HTABLE", "zkUrl" -> zkQuorum))

CREATED_DATE 在数据框中始终设置为 DateTime.now()。

如果 HBase 中已存在该行,但其他字段中有更新,我不希望更新该字段。

我可以使用 HBase 的 checkAndPut 来实现它:放置所有字段并在 created_date 字段上使用 checkAndPut。

但是如何使用 Phoenix-Spark API 做到这一点?我应该改用 HBase API 吗?

【问题讨论】:

  • 如果您有关于 phoenix spark 集成的高级问题,我建议您加入 Phoenix 邮件列表。回答这类问题的人要多得多。
  • 当我试图在那里发布我的问题时,它打开了我的邮件 (To:user@phoenix.apache.org),我收到了一封来自 Apache Mailer-daemon -fail 的回复邮件。
  • 您订阅了邮件列表吗?在向它发送电子邮件之前,您需要订阅它。

标签: hadoop apache-spark hbase phoenix


【解决方案1】:

Approach1: 在这种情况下,您应该检查该行是否存在。如果该行存在,则从您的数据框中删除 CREATED_DATE 列。
Approach2: 如果您无法从数据框中删除 CREATED_DATE 列,那么您需要编写一个 prePut 协处理器,该处理器将在区域服务器上执行任何放置之前运行。这种方法会稍微难一些。所以,我建议第一种方法。

【讨论】:

  • 我不能做第一种方法,因为我在保存之前只将一个模式应用于数据帧
  • @sophie:如果您认为我的回复回答了您的问题,请通过接受回答来确认。
  • 嗨,Anil,我不确定协处理器是如何工作的。但我可以使用 HBase 的 checkAndPut 来实现它。我只是不确定如何使用 Phoenix-Spark API 来实现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多