0

我希望将多个 upsert 请求组合成一个请求并将其传递给 phoenix 查询服务器。

我正在发送以下 json 来更新一条记录

POST https://tishihdiphoenix.azurehdinsight.net/hbasephoenix/ 
HTTP/1.1
request: {
   "request":"prepareAndExecute",
   "connectionId":"000000-0000-0000-00000001",
   "sql":"UPSERT INTO Table ( col1 ) VALUES ( value1 ):100"
}
Authorization: Basic YWRtaW46Tm9tb3JlTm9tb3JlIT0x
Host: tishihdiphoenix.azurehdinsight.net
Content-Length: 0
Connection: Keep-Alive

我希望能够在一个 json 中发送多个具有不同值的 upsert 语句。我查看了 avatica 路线图,其中提到我们可以通过 Execute-Fetch 调用复合 RPC。

http://calcite.apache.org/docs/avatica_roadmap.html

我希望获得一个关于如何执行此操作的示例,因为文档中没有执行获取示例。

4

2 回答 2

0

也许这与您关于使用查询服务器的主题有点不同。

我的经验HBase Phoenix Batch Insert是使用 JDBC 驱动程序,

  • 关闭连接时的自动提交

  • 执行一系列插入语句

  • 手动提交

于 2016-04-11T09:42:53.097 回答
0

https://calcite.apache.org/docs/avatica_json_reference.html

https://calcite.apache.org/docs/avatica_protobuf_reference.html

我推荐使用协议缓冲区(Phoenix 4.7.+ 使用 Calcite 1.5,默认情况下使用协议缓冲区)而不是 JSON,因为生成的类比 JSON 库更易于使用。协议缓冲区也与语言无关。

对于 JSON 或 Protocol Buffers,基本过程如下:

寄一个PrepareRequest

收到PrepareResponse

ExecuteRequestTypedValue每个参数发送

收到ExecuteResponse

如果您有更多数据帧,请发送FetchRequest和接收FetchResponse所有后续帧。

于 2016-02-10T06:21:59.433 回答