ytake / php-presto-client
PHP PrestoDB 客户端
0.1.4
2017-09-19 18:36 UTC
Requires
- php: >=7.0.0
- ext-curl: *
- fig/http-message-util: ^1.1
- guzzlehttp/guzzle: ^6.2
- psr/log: ~1.0
- ramsey/uuid: ^3.0
Requires (Dev)
- monolog/monolog: ^1.22
- pdepend/pdepend: ^2.2.4
- phploc/phploc: *
- phpmd/phpmd: @stable
- phpunit/phpunit: ~6.0
- satooshi/php-coveralls: *
- sebastian/phpcpd: *
- sensiolabs/security-checker: ^4.0.0
- squizlabs/php_codesniffer: ~2.7
This package is auto-updated.
Last update: 2024-09-20 01:18:59 UTC
README
PrestoDB HTTP 协议 PHP 客户端
什么是 Presto
Presto 是一个开源的分布式 SQL 查询引擎,用于对从吉字节到皮字节的各种规模的数据源运行交互式分析查询。
安装
要求 >= PHP 7.0
$ composer require ytake/php-presto-client
用法
标准
<?php $client = new \Ytake\PrestoClient\StatementClient( new \Ytake\PrestoClient\ClientSession('http://localhost:8080/', 'acme'), 'SELECT * FROM acme.acme.acme' ); // execute http request $client->execute(); // next call uri $client->advance(); /** @var \Ytake\PrestoClient\QueryResult $result */ // current result $result = $client->current(); // request cancel $client->cancelLeafStage();
批量操作
<?php $client = new \Ytake\PrestoClient\StatementClient( new \Ytake\PrestoClient\ClientSession('http://localhost:8080/', 'acme'), 'SELECT * FROM acme.acme.acme' ); $resultSession = new \Ytake\PrestoClient\ResultsSession($client); // yield results instead of returning them. Recommended. $result = $resultSession->execute()->yieldResults(); // array $result = $resultSession->execute()->getResults();
获取样式
修复数据对象
<?php $client = new \Ytake\PrestoClient\StatementClient( new \Ytake\PrestoClient\ClientSession('http://localhost:8080/', 'acme'), 'SELECT * FROM acme.acme.acme' ); $resultSession = new \Ytake\PrestoClient\ResultsSession($client); $result = $resultSession->execute()->yieldResults(); /** @var \Ytake\PrestoClient\QueryResult $row */ foreach ($result as $row) { foreach ($row->yieldData() as $yieldRow) { if ($yieldRow instanceof \Ytake\PrestoClient\FixData) { var_dump($yieldRow->offsetGet('column_name'), $yieldRow['column_name']); } } }
数组键
<?php $client = new \Ytake\PrestoClient\StatementClient( new \Ytake\PrestoClient\ClientSession('http://localhost:8080/', 'acme'), 'SELECT * FROM acme.acme.acme' ); $resultSession = new \Ytake\PrestoClient\ResultsSession($client); $result = $resultSession->execute()->yieldResults(); /** @var \Ytake\PrestoClient\QueryResult $row */ foreach ($result as $row) { /** @var array $item */ foreach ($row->yieldDataArray() as $item) { if (!is_null($item)) { var_dump($item); } } }
映射类
<?php class Testing { private $_key; private $_value; } $client = new \Ytake\PrestoClient\StatementClient( new \Ytake\PrestoClient\ClientSession('http://localhost:8080/', 'acme'), 'SELECT * FROM acme.acme.acme' ); $resultSession = new \Ytake\PrestoClient\ResultsSession($client); $result = $resultSession->execute()->yieldResults(); /** @var \Ytake\PrestoClient\QueryResult $row */ foreach ($result as $row) { foreach($row->yieldObject(Testing::class) as $object) { if ($object instanceof Testing) { var_dump($object); } } }