php开发Hive Web查询_实践检验真理的技术博客_51CTO博客


本站和网页 https://blog.51cto.com/slaytanic/766230 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

php开发Hive Web查询_实践检验真理的技术博客_51CTO博客
php开发Hive Web查询
关注
Slaytanic
php开发Hive Web查询
推荐 原创
Slaytanic
2012-01-19 12:42:39
博主文章分类:hadoop
©著作权
文章标签
php
数据
hadoop
hive
thrift
文章分类
PHP
前端开发
©著作权归作者所有:来自51CTO博客作者Slaytanic的原创作品,谢绝转载,否则将追究法律责任
自己闲的没事,用php写了一个hive的查询界面,顺便把开发过程和遇到的问题记录下来。一、php Hive API的问题默认情况下,Hive本身自带的php API是不太好使的。一个是路径有问题,一个是代码本身也有问题。所以,采用thrift重新自己生成hive的php api。找到所有的thrift文件,并复制到某个路径下#cd hive#for i in `find ./ -name "*.thrift"`>do>cp ${i} /usr/local/www/hive/thrift>done然后找到thrift里面的fb303.thrift,复制到一起。修改hive_metastore和hive_service里面inlclude fb303的路径。然后用thrift -r --gen php 生成两个hive的thrift。然后再复制thrift本身的protocol,transport文件夹和autoload.php和Thrift.php。我把这些东西都放在libs文件夹下。最终目录结构和文件名如下:./tree.sh libs | grep -v ".php"|---transport|---protocol|---packages||---fb303||---hive_service||---queryplan||---hive_metastore./tree.sh libs/|---transport||---TTransport.php||---TNullTransport.php||---TSocketPool.php||---TMemoryBuffer.php||---TFramedTransport.php||---TBufferedTransport.php||---THttpClient.php||---TPhpStream.php||---TSocket.php|---autoload.php|---Thrift.php|---protocol||---TProtocol.php||---TBinaryProtocol.php|---packages||---fb303|||---fb303_types.php|||---FacebookService.php||---hive_service|||---hive_service_types.php|||---ThriftHive.php||---queryplan|||---queryplan_types.php||---hive_metastore|||---ThriftHiveMetastore.php|||---hive_metastore_types.php|||---hive_metastore_constants.php然后解决API中的代码bug问题,正常情况下,php是同步阻塞执行,而hive的查询时间比较长,在查询期间,端口会没有响应,所以thrift会返回socket timeout的错误。所以需要修改api中对socket buffer的处理。编辑transport下TSocket.php红色修改前,绿色修改后,总共五个位置需要修改。1.先找public function readAll($len)方法在方法里找到if ($buf === FALSE || $buf === '') {修改为if($buf === FALSE) {找到两处if ($md['timed_out']) {均改为if (true === $md['timed_out'] && false === $md['blocked']) {--------------------------------------------2.找到public function read($len)方法在方法里找到if ($data === FALSE || $data === '') {修改为if ($data === FALSE) {找到一处if ($md['timed_out']) {修改为if (true === $md['timed_out'] && false === $md['blocked']) {二、修改nginx和php的设置,为了保证hive正常使用,我用的php 5.3.8nginx修改http{ keepalive_timeout 36000; server { location ~ \.php$ { fastcgi_connect_timeout 36000; fastcgi_send_timeout 36000; fastcgi_read_timeout 36000; } }}
#sbin/nginx -s reloadphp修改#cd etc#vi php-fpm.confprocess_control_timeout = 36000srequest_terminate_timeout = 36000s#cd lib#vi php.inimax_input_time = 36000default_socket_timeout = 36000#killall php-fpm#sbin/php-fpm -c lib/php.ini因为hive查询比较慢,为了防止超时,我都设置成了10小时超时,都是内网应用,无所谓了。三、编写第一个php-hive程序<?php$GLOBALS['THRIFT_ROOT'] = './libs/';// load the required files for connecting to Hiverequire_once $GLOBALS['THRIFT_ROOT'] . 'packages/hive_service/ThriftHive.php';require_once $GLOBALS['THRIFT_ROOT'] . 'transport/TSocket.php';require_once $GLOBALS['THRIFT_ROOT'] . 'protocol/TBinaryProtocol.php';// Set up the transport/protocol/clientdefine('HOST','192.168.1.49');define('PORT','10000');$transport = new TSocket(HOST, PORT);$protocol = new TBinaryProtocol($transport);$client = new ThriftHiveClient($protocol);//Create ThriftHive object$transport->open();$client->execute('add jar /opt/modules/hive/hive-0.7.1/lib/hive-contrib-0.7.1.jar');$client->execute('show databases');$db_array = $client->fetchAll();$i = 0;while('' != @$db_array[$i]) { echo $db_array[$i]; $i++;}$transport->close();?>php中有几种hive方法,列出来以便参考execute($query) 执行查询fetchOne() 返回一行结果fetchN($numRows) 返回N行结果,给定行数fetchAll() 返回全部结果集getSchema() 获取SchemagetThriftSchema() 获取Thrift Server SchemagetClusterStatus() 获取集群状态,很贴心啊,还没试过getQueryPlan() 获取QueryPlan主要常用的就这些,当然没有提供类似mysql_select_db这样的命令,需要使用use database这样的语句去做查询。然后用execute方法执行一下。
打赏
收藏
评论
分享
举报
上一篇:OpenBSD,FreeBSD,Linux硬盘速度对比
下一篇:开源项目phpHiveAdmin
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
全部评论
()
最热
最新
相关文章
【Hive】Hive 查询
文章目录一、环境准备二、Hive 查询1、普通查询2、别名查询3、限定查询4、多表ype) 5 个字段,字符类型为..
hive
hadoop
big data
字段
Hive——Hive查询
查询语句语法:[WITH CommonTableExpression (, CommonTableExpression)*] (Note: Only available starting with Hive0.13.0)SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference[W...
Hive
Hive查询
hive
数据
mapreduce
PHP开发Web服务
PHP开发Web服务WSO2 WSF/PHP(WSO2 Web Services Framework/PHP,WSO2 Web服务框架) 是一个PHP扩展,允许用来创建和使用Web服务。它支持SOAP1.1、SOAP1.2、MTOM、Web服务寻址、Web服务安全,也支持REST风格的调用。WSO2 WSF/PHP最新的版本(v2.0.0)刚发布。下面是一个简短的指南解释了怎样用WSO2 WSF
php
xml
apache
服务器
web服务
hive查询
查询语句可以直接使用非分析函数的变量的别名select t1.*from (select account_id, sum(recharge_money) recharge_money_totalfrom dw.dw_app where dt='2016-11-21' and app_id='2137'and msgtype = 'role.recharge' group by
分析函数
查询语句
技术
php开发web服务原理
php开发web服务原理 运行原理1 先启动进程2 启动进程了 端口自然也会开启3 端口自然也接受数据 并且能处理 这个是最简单的web服务器 开发简要socket 开启端口 并且接收数据 处理。。返回给客户端
php
web服务
web服务器
数据
javascript
hive查询详解
查询的一些例子:1.queryhive> SELECT name,subordinates[0] FROM employees;John Doe Mary SmithMary Smith Bill KingTodd Jones NULL2.expressionhive> SELECT upper(name),salary, deductions["Federal Taxes"],rou
Hadoop
hive
超人学院
Hive的查询
基本查询全表和特定列查询1.全表查询select * from emp;2.选择特定列查询select empno,ename from emp;注意:1.SQL语言大小写不敏感2.SQL可以写在一行或者多行3.关键字不能被缩写也不能分行列别名主要作用:重命名一个列便于计算使用AS关键字为列指定别名select ename as name from e...
Hive的查询
Hive
HQL查询
数据
hive
hive:查询语句
语句执行顺序 HQL语句执行顺序 from + join --> where --> select --> group by --> 聚合函数 --> having --> order by --> limit MySQL语句执行顺序 from + join --> where --> group ...
Hive
数据
子查询
聚合函数
hive
Hive之——查询
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/88384579select.. from 语句比如:employees表如下:create table employees(name string,salary float,subordinates array<string>,deductions ...
Hive教程
大数据技术
Hive总结(十二)Hive查询进阶
通过Hive提供的order by子句可以让最终的输出结果整体有序。但是因为Hive是基于Hadoop之上的,要生成这种整体有序的结果
hive
子查询
分隔符
PHP和MYSQL Web开发(一)
第一章 入门 1.php标记 php标记有4种风格,推荐使用XML风格:<?php ?> 注释:多行/* */,单行// 2.访问表单变量 PHP的变量都是以$符号开始。有3种风格可以访问表单变量 $tireqty
PHP
MYSQL
数据库
Web
开发
PHP和MYSQL Web开发(二)
第五章 代码重用和函数编写 1.require()和include()函数 require函数可以将其他文件调入当前文件中,而且会作为PHP文件的一部分执行(PHP通常用来解析扩展名被定义成如.php的文件,如果php语句放在html文件中,默认不会被解析)。就算是hmtl文件中的php语句也会被解析。 利用这个函数可以制作WEB站点的模板,统一header,footer,nav。 inc
PHP
MYSQL
数据库
Web
开发
PHP和MYSQL Web开发(三)
第八章 设计WEB数据库 1.基本概念 主键和外键:表中的标志称为键或主键,一个键可能由几列组成。数据库通常由多个表组成,可以使用键作为表格之间的引用。当表的主键出现在其他表中时,就是其他表的外键。 关系:外键表示两个表格数据的关系。关系数据库中有3种基本的关系类型,一对一,一对多,多对的。 一对一关系表示关系双方只有一个对象相互对应,这种关系中,外键不是
PHP
MYSQL
数据库
Web
开发
Swoole(PHP高级Web开发框架)
  框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成!  Swoole有独立特行的道!  Swoole不是一个向Zend Framework、CakePHP、Yii、symfony、ThinkPHP等框架,或者WordPress、Drupal 、Discuz、UChome等开源产品看齐的
Swoole
Web开发-PHP基础篇(四)
Web开发-PHP基础篇(四)一、数据库基本概念**数据库:**信息存储的仓库,包括一系列的关系措施!**表:**一个数据库中可以有若干张表(形式上你可以看出我们日常生活中建立的表)**字段:**表里面的信息会分若干个栏目来存,这些栏目,在数据库技术中叫"字段",栏目里面存的具体信息叫"字段值"**记录:**一条信息我们叫一条记录一个数据库管理系统中可以建立若干个数据库,每个数据库中...
Web
mysql
字段
表名
数据库
Web开发-PHP基础篇(三)
Web开发-PHP基础篇(三)又继续学习了PHP的学习教程,正则表达式、日期与时间、图像处理、文件与目录操作和会话控制。感觉都十分重要,于是在学习中做了认真总结,总结如下一、正则表达式1、正则表达式语法规则​ 描述了一类字符串的特征,然后通过这个特征可以配合一些特定的函数,来完成对字符串更加复杂的一系列操作!​ 普通字符和特殊字符组成的一个字符串如:$a='/test/';$str=
Web
php
字符串
html
正则表达式
通过Hive查询 HBase
线上的zipkin的存储是利用的HBase0.94.6,一开始Dev想直接写MR来做离线分析,后来聊了下发现走Hive会提高开发的效率(当然,这里查询HBase的SQL接口还有phoenix,Impala等,只不过都还不够成熟,并且是离线分析不是adhocquery,BTW,前阶段和intel的聊过他们的Hive Over HBase是跳过MR的,效率非常赞,不过钱也略贵了=.=);其实用Hive
hbase
hive
hive - 接收查询结果
#!/bin/bash id=`hive -e "set hive.cli.print.header=false;select id,name from test.test where name = 'wangwu' group by id,name;"` echo echo $id echo ...
hive
bash
it
Hive中查询语句
查询语句常用函数求总行数(count)hive (default)> select count(*) cnt from emp;求工资的最大值(max)hive (default)> select max(sal) max_sal from emp;求工资的最小值(min)hive (default)> select min(sal) min_sal from ...
Hive
Slaytanic
关注
私信
分类列表
更多
# Web12篇
# *BSD15篇
# 路由交换3篇
# 集群6篇
# CDN1篇
近期文章
1.什么是网络监控?OpManager 网络监控解决方案
2.Python赋值和拷贝
3.SpringBoot2.x系列教程48--多数据源配置之AOP动态切换数据源
4.年终关账 梳理收入的方法和特别交易事项
5.Day17_18_SpringCloud教程之Hystrix Dashboard熔断监控面板
签到领勋章
返回顶部
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
具体原因
包含不真实信息
涉及个人隐私
原文链接(必填)
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M
取消
确认
已经收到您得举报信息,我们会尽快审核
打赏
收藏
评论
分享
51CTO首页
内容精选
博客
学堂
精培
企业培训
CTO训练营
开源基础软件社区
LeaTech全球CTO领导力峰会
移动端
公众号矩阵
博客
免费课程
课程排行
直播课
软考学堂
精品班
厂商认证
IT技术
2022年软考
PMP项目管理
在线学习
企业服务
CTO训练营
技术经理研习营
LeaTech峰会
文章
资源
问答
开源课堂
专栏
直播
51CTO博客
首页
关注
排行榜
订阅专栏
学堂
精培
开源社区
CTO训练营
51CTO
班级博客
登录注册
手机随时阅读
写文章
搜索历史
清空
热门搜索
查看【
】的结果
Copyright 2005-2022 51CTO.COM
版权所有 京ICP证060544号
关于我们
官方博客
意见反馈
了解我们
全部文章
在线客服
网站地图
热门标签
友情链接
开源基础软件社区
51CTO学堂
51CTO
汽车开发者社区