我希望将多个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
我希望得到一个关于如何执行此操作的示例,因为文档中没有执行-fetch示例。
答案 0 :(得分:0)
https://calcite.apache.org/docs/avatica_json_reference.html
https://calcite.apache.org/docs/avatica_protobuf_reference.html
我推荐使用Protocol Buffers(Phoenix 4.7。+使用Calcite 1.5,默认使用Protocol Buffers)而不是JSON,因为生成的类比JSON库更清晰。协议缓冲区也是语言无关的。
对于JSON或Protocol Buffers,基本过程如下:
发送PrepareRequest
接收PrepareResponse
为每个参数发送ExecuteRequest
TypedValue
接收ExecuteResponse
如果您有更多数据框,请为所有后续帧发送FetchRequest
并接收FetchResponse
。
答案 1 :(得分:0)
这可能与您使用查询服务器的主题有点不同。
我使用HBase Phoenix Batch Insert
的经验是使用JDBC驱动程序,
关闭连接上的自动提交
执行一系列插入语句
手动提交