xtendsys-labs / php-presto-client
PHP PrestoDB.io 客户端
Requires
- php: >=5.3.0
- ext-curl: *
This package is not auto-updated.
Last update: 2024-09-18 19:09:11 UTC
README
这是一个简单的PHP类,用于连接到运行在Hadoop HDFS集群上的PrestoDB服务器,该服务器执行分布式查询。Presto使用SQL的一个子集作为其查询语言。Presto是Hadoop-Hive或Impala的替代品。
用法
查看Demo.php以了解如何使用它的简要演示
要求
Php-Curl
兼容性
已成功测试与所有版本Presto(至0.58版本)的兼容性
Presto客户端协议
以下描述由Ivo Herweijer为Python接口编写
客户端和服务器之间使用的通信协议尚未文档化。它似乎如下所示
客户端向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请求(头部:X-Presto-Source、User-Agent、X-Presto-User。正文:空)直到服务器响应不再包含'nextUri'链接为止。当没有'nextUri'时,查询完成。如果服务器最后的响应包含了错误部分('error'),则查询失败,否则查询成功。如果服务器响应的http状态码不是200且内容类型为application/json,则查询也应视为失败。503 http响应意味着服务器(过于)繁忙。在等待至少50ms后重试请求。服务器响应可能包含一个'状态'变量。这仅用于信息目的(可能在未来的实现中发生变化)。服务器对每个'nextUri'的每个响应都可能包含有关查询返回的列和所有或部分查询数据的信息。如果响应包含数据部分,则列部分始终可用。
服务器响应可能包含一个包含取消查询URI的变量('partialCancelUri')。客户端可以使用此链接向服务器发出DELETE请求。响应http状态码为204。
Presto服务器将保留已完成查询的信息15分钟。当客户端没有响应服务器(通过跟随'nextUri'链接)时,服务器将在5分钟后取消这些'死亡'查询。这些超时是硬编码在Presto服务器源代码中的。
感谢
感谢easywarehousing.com的Ivo Herweijer,他为Python接口编写,并从中复制了协议描述,并从中获得了一些关于PHP接口的灵感。