文档章节

Hive常用HiveQL

哈鼎
 哈鼎
发布于 2014/11/06 11:00
字数 1346
阅读 2099
收藏 3

MySQL设置:

#添加一个数据库用户

insert into mysql.user(Host,User,Password) values("%","longsheng",password("longsheng1234"));

#数据库授权:

GRANT all ON hive.* TO longsheng@'longV007' IDENTIFIED BY 'sheng';

flush privileges;

#设置数据库日志格式

set global binlog_format='MIXED';

 

启动Hive

#集群方式启动Hive

hive --auxpath /usr/share/hive/lib/hive-hbase-handler-0.13.1.jar,/usr/share/hive/lib/zookeeper-3.4.6.jar

(可选参数 -hiveconf hive.root.logger=DEBUG,console)

 

创建表Hive-HBase关联表

#创建HiveHBase的关联表:

       * bidask_quote_hivehive的表

       * "hbase.table.name" = "bidask_quote"hbase中已经存在的表

接下来将两者关联起来,命令如下:

 

#创建关联表命令

hive> CREATE EXTERNAL TABLE bidask_quote_hive(key string,ProdCode string,ProdName string,TradingDay string,ExchangeID string,ExchangeInstID string,LastPrice string,PreSettlementPrice string,PreClosePrice string,PreOpenInterest string,OpenPrice string,HighestPrice string,LowestPrice string,Volume string,Turnover string,TotalVolume string,TotalTurnover string,OpenInterest string,ClosePrice string,SettlementPrice string,UpperLimitPrice string,LowerLimitPrice string,PreDelta string,CurrDelta string,UpdateTime string,UpdateMillisec string,BidPrice1 string,BidVolume1 string,AskPrice1 string,AskVolume1 string,BidPrice2 string,BidVolume2 string,AskPrice2 string,AskVolume2 string,BidPrice3 string,BidVolume3 string,AskPrice3 string,AskVolume3 string,BidPrice4 string,BidVolume4 string,AskPrice4 string,AskVolume4 string,BidPrice5 string,BidVolume5 string,AskPrice5 string,AskVolume5 string,AveragePrice string,Equil string,CloseDate string,DecInPrice string,logDateTime string)

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:ProdCode,info:ProdName,info:TradingDay,info:ExchangeID,info:ExchangeInstID,info:LastPrice,info:PreSettlementPrice,info:PreClosePrice,info:PreOpenInterest,info:OpenPrice,info:HighestPrice,info:LowestPrice,info:Volume,info:Turnover,info:TotalVolume,info:TotalTurnover,info:OpenInterest,info:ClosePrice,info:SettlementPrice,info:UpperLimitPrice,info:LowerLimitPrice,info:PreDelta,info:CurrDelta,info:UpdateTime,info:UpdateMillisec,info:BidPrice1,info:BidVolume1,info:AskPrice1,info:AskVolume1,info:BidPrice2,info:BidVolume2,info:AskPrice2,info:AskVolume2,info:BidPrice3,info:BidVolume3,info:AskPrice3,info:AskVolume3,info:BidPrice4,info:BidVolume4,info:AskPrice4,info:AskVolume4,info:BidPrice5,info:BidVolume5,info:AskPrice5,info:AskVolume5,info:AveragePrice,info:Equil,info:CloseDate,info:DecInPrice,info:logDateTime")

TBLPROPERTIES("hbase.table.name" = "bidask_quote"); 

我的表的字段很多,50多个。

说明:

       1.bidask_quote_hive(key string,ProdCode string,string,ProdName string,....)hive表的结构

       2."hbase.columns.mapping" = "info:ProdCode,info:ProdName,info:TradingDay,...)HBase中的列信息,这里现在只有一个列蔟。

 

查询语句

# 查看表是否创建成功

hive> show tables;

 

# 查询全字段

hive> select * from bidask_quote_hive limit 3;

 

# 查询所有条数

hive> select count(1) from bidask_quote_hive;

 

# 投影查询

hive> select key,ProdCode,TradingDay from bidask_quote_hive limit 3;

 

# 别名查询

别名查询对于单表查询没有多少意义,如果使用连接查询的话可以使用别名

hive> select b.ProdCode,b.TradingDay from bidask_quote_hive b limit 3;

 

# 正则表达式指定列

hive> select symbol,'price.*' from stocks;

(说明:该条语句查询symbol列和以price为前缀的所有列)

 

# 使用列值进行计算

hive> select upper(name),deductions["Federal Taxes"],round(salary * (1 - deductions["Federal Taxes"])) from employees;

(说明:1upper(name)函数对name字段的值全部转为大写 

          2deductios是个Map类型的字段,我们只取出Federal Taxes的值

          3round()函数是做了一个四舍五入的运算)

 

# limit查询

hive> select * from bidask_quote_hive limit 3;

 

# 列别名

hive> select upper(name),deductions["Federal Taxes"] as fed_taxs from employees;

 

# 嵌套查询

hive> from(

    > select upper(name),deductions["Federal Taxes"]  as fed_taxs,

    > round(salary * (1 - deductions["Federal Taxes"])) as salary_minus_fed_taxes from employees;

    > ) e

    > select e.name, e.salary_minus_fed_taxes

    > where e.salary_minus_fed_taxes > 7000;

      

# where过滤查询

hive> select * from employees where country = 'US' and state = 'CA'

 

# like子句

示例1

hive> select name,address.street from employees where address.street like '%Avo.';

    John    1 Michigan Ave.

    Todd    200 Chicago Ave.

示例2

hive> select name,address.street from employees where address.street like '%Chi%';

    Todd    200 Chicago Ave.

      

# Relike子句

Relike相当由于正则表达式,可以使用Java的正则表达式.例:

hive>select name, address.street from employees where address.street relike '.*(Chicago|Ontario).*'

       Mary     100 Ontario St.

       todd      200 Chicago Ave.

说明:上面的正则表达式中点号(.)标识和任意字符匹配,星号(*)表示重复“左边的字符串”零次或无数次。表达式(x|y)表示xy

      

#group by

说明:group by 通常和聚合函数一起使用,按照一个或多个列进行分组,然后对每个组执行聚合操作。

 

示例1:存在交易表stocks,以下查询语句按照苹果公司股票(股票代码APPL)的年份对股票记录进行分组,然后计算每年的平均收盘价

hive> select year(ymd),avg(price_close) from stocks where exchange = 'NASDAQ' AND symbol 'APPL' GROUP BY year(ymd);

1984      25.5786

1985      20.1936

1987      53.8456

 

示例2hiving字句

hive> select year(ymd),avg(price_close) from stocks where exchange = 'NASDAQ' AND symbol 'APPL' GROUP BY year(ymd)

    > having avg(price_close) > 50.0;

 

JOIN语句

# INNER JOIN语句

内连接中,只有进行连接的两个表中都存在与连接标准相匹配。

示例1:对苹果公司(APPL)IBM公司(IBM)的股价进行比较。股票表stocks进行自连接,连接条件是ymdyear-month-day)相等。

hive> select a.ymd, a.price_close, b.price_close

    > from stocks a join stocks b on a.ymd = b.ymd

    > where a.symbol = 'APPL' and b.symbol = 'IBM';

2010-01-04   210.21   132.45

2010-01-05   214.41   130.26

2010-01-06   211.61   134.87

2010-01-07   212.01   133.45

 

# JOIN语句

hive> select s.ymd, s.symbol, s.price_close, d.dividend

    > from stocks s join dividend d on s.ymd = d.ymd and s.symbol = d.symbol

    > where s.symbol = 'APPL';

      

       1987-05-11   APPL      77.01     0.015

       1987-08-10   APPL      48.61     0.015

       1987-11-17   APPL      78.01     0.002

      

3张表的JOIN

hive> select a.ymd, a.price_close, b.price_close,c.price_close

    > from stocks a join stocks b on a.ymd = b.ymd

    >               join stocks c on a.ymd = c.ymd

    > where a.symbol = 'APPL' and b.symbol = 'IBM' and c.symbol = 'GE';

      

       1987-05-11   APPL      77.01     0.015

       1987-08-10   APPL      48.61     0.015

       1987-11-17   APPL      78.01     0.002

 

# 查询优化

       尽量将大表放在前面

      

# LEFT OUTER JOIN语句

做外连接:join操作左边表中符合where子句的所有记录将会被返回。join右边表中如果没有符合on后面连接条件的记录时,那么

右表列的值将会是NULL。例:

hive> select s.ymd, s.symbol, s.price_close, d.dividend

    > from stocks s left outer join dividend d on s.ymd = d.ymd and s.symbol = d.symbol

    > where s.symbol = 'APPL';

 

ORDER BY SORT BY语句

ORDER BY:全排序

SORT BY:只会在每个reducer中对数据进行排序,只进行局部排序,保证每个reducer输出的数据是有序的。例:

hive> select s.ymd, s.symbol, s.price_close

    > from stocks s

    > order|sort by s.ymd ASC, s.symbol DESC;

 

 

 

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
哈鼎
粉丝 4
博文 20
码字总数 7646
作品 0
深圳
Impala SQL 语言参考

Impala SQL 语言参考 Cloudera Impala 的查询语言是基于 SQL 的。为了保护用户在技能和查询设计方面的已有投资,Impala 提供与 Hive 查询语言(HiveQL)的高度兼容: 因为使用与 Hive 记录表结...

weiqingbin
2013/12/20
0
1
从SQL到HiveQL应改变的几个习惯

2009-10-30 @ taobao 引言 别名 虚拟列 IN INNER JOIN 分号字符 Insert Merge IS [NOT] NULL 引言 HiveQL非常像SQL,但二者并非等价,若不注意期间的一些差异,容易导致HiveQL的语义错误,或...

zhongl
2011/09/23
0
0
Hive架构及Hive On Spark

Hive的所有数据都存在HDFS中. (1)Table:每个表都对应在HDFS中的目录下,数据是经过序列化后存储在该目录中。同时Hive也支持表中的数据存储在其他类型的文件系统中,如NFS或本地文件系统。 (2...

雪童子
2015/10/23
0
0
Amazon EMR(Elastic MapReduce):亚马逊Hadoop托管服务运行架构&Hadoop云服务之战:微软vs.亚马逊

http://s3tools.org/s3cmd Amazon Elastic MapReduce (Amazon EMR)简介 Amazon Elastic MapReduce (Amazon EMR) 是一种 Web 服务,提升企业、研究人员、数据分析师和开发人员轻松、经济高效掌...

长征2号
2017/08/30
0
0
Hadoop Hive sql 语法详解

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功...

luanpeng825485697
05/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6 取余运算

python中取余运算逻辑如下: 如果a 与d 是整数,d 非零,那么余数 r 满足这样的关系: a = qd + r , q 为整数,且0 ≤ |r| < |d|。 经过测试可发现,python3.6中取余运算得到的 r 是正整数;...

colinux
16分钟前
1
0
[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
3
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
3
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
1
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部