webberwu / php-presto-client
PHP PrestoDB.io 客户端是从nanernunes分支出来的
Requires
- php: >=5.3.0
- ext-curl: *
This package is auto-updated.
Last update: 2024-09-21 21:19:37 UTC
README
这是一个简单的PHP类,用于连接到运行在Hadoop HDFS集群上分布式查询的PrestoDB服务器。Presto使用SQL子集作为其查询语言。Presto是Hadoop-Hive或Impala的替代方案。
用法
查看Demo.php以了解如何使用它的简要演示
要求
Php-Curl
兼容性
已成功测试与所有版本Presto(至0.58版本)的兼容性
Presto客户端协议
以下描述由Ivo Herweijer为其Python界面编写
在Presto客户端和服务器之间使用的通信协议尚未记录。它似乎如下所示
客户端向Presto服务器发送http POST请求,页面:"/v1/statement"。头部信息应包括:X-Presto-Catalog,X-Presto-Source,X-Presto-Schema,User-Agent,X-Presto-User。请求体应包含SQL语句。服务器通过返回JSON数据(http状态码200)进行响应。此响应可能包含最多3个uri。一个提供获取查询执行更多信息的链接('infoUri'),另一个提供获取下一数据包的链接('nextUri'),还有一个提供取消查询的uri('partialCancelUri')。
客户端应向服务器发送GET请求(Header:X-Presto-Source,User-Agent,X-Presto-User。Body:空)直到服务器响应不再包含'nextUri'链接。当没有'nextUri'时,查询完成。如果服务器最后响应包含错误部分('error'),则查询失败,否则查询成功。如果服务器响应的http状态不是200且Content-Type为application/json,则查询也应视为失败。503 http响应表示服务器(太)忙。等待至少50ms后重试请求。服务器响应可能包含一个'状态'变量。这仅用于信息目的(可能在未来实现中发生变化)。服务器对每个'nextUri'的响应可能包含有关查询返回的列和所有或部分查询数据的信息。如果响应包含数据部分,则列部分始终可用。
服务器响应可能包含一个变量,包含取消查询的uri('partialCancelUri')。客户端可以使用此链接向服务器发出DELETE请求。响应http状态码是204。
Presto服务器将保留已完成查询的信息15分钟。当客户端不响应服务器(通过跟随'nextUri'链接)时,服务器将在5分钟后取消这些'死亡'查询。这些超时是硬编码在Presto服务器源代码中的。
感谢
感谢easywarehousing.com的Ivo Herweijer,他为Python界面编写了代码,并从中复制了协议描述,并为Php界面汲取了一些灵感。