我希望将多个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路线图,它提到我们可以通过执行fetch调用复合rpc。
http://calcite.apache.org/docs/avatica_roadmap.html
我希望得到一个如何做到这一点的例子,因为在文档中没有执行获取的例子。
2条答案
按热度按时间fykwrbwg1#
关于使用查询服务器,这可能有点偏离主题。
我的经验
HBase Phoenix Batch Insert
正在使用jdbc驱动程序,关闭自动提交连接
执行一系列insert语句
手动提交
hiz5n14c2#
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或协议缓冲区,基本过程如下:
发送
PrepareRequest
接收PrepareResponse
发送ExecuteRequest
与TypedValue
对于每个参数接收
ExecuteResponse
如果有更多Dataframe,请发送FetchRequest
接受FetchResponse
对于所有后续帧。