文档章节

Hive Tips

Avner
 Avner
发布于 2017/08/25 15:01
字数 940
阅读 7
收藏 0
点赞 0
评论 0

 

1.筛选变量值中包含特殊符号的值;

选取出名字中包含下划线的名字,如name=AB_TEST;

 select * from emp where name like '%_%';  
-- 此方法的得到的结果是全部的名字,而不只是我们想要的AB_TEST,
-- 因为在HQL模糊查询中,'%'表示任意一个或多个字符,'_'表示任意一个字符。
-- 所以'%_%'的写法并不能筛选出AB_TEST;

为了让'_'表示它本身,应该用转义字符;
select * from emp where name like '%\\_%';
-- 第一个'\'表示的是它是一个转义字符的含义; 而第二'\'表示的是转义字符,此时'-' 表示的是它本身的含义;

2.Hive 排序中NULL的处理;

order by后面可以接列的位置时,需设置参数:

set hive.groupby.orderby.position.alias=true;
true:可以使用列的位置; false:不可以使用列的位置;

在升序排序时,空值(Null)默认排在结果集最前面,在降序排序时,空值(Null)默认排在结果集最后面;

3.Hive Not in后接的子查询中不能有空值;

但在实际操作时发现,子查询中有空值并不会导致最终结果有影响;

4.Hive 启用客户端方式(具体操作还不清楚,待后续跟进);

启动客户端方式的方法:hive --service hiveserver;

5.和SQL一样,HiveQL中同样支持DISTINCT操作,如下示例:

此部分转至:http://blog.csdn.net/zj360202/article/details/38420575


(1) SELECT count(DISTINCT uid) FROM log
(2) SELECT ip, count(DISTINCT uid) FROM log GROUP BY ip
(3) SELECT ip, count(DISTINCT uid, uname) FROMlog GROUP BY ip
(4) SELECT ip, count(DISTINCTuid), count(DISTINCT uname) FROMlog GROUP BY ip

当我们使用Hive QL中的去重关键字DISTINCT时,需要注意的一点是:
在多个列上进行的去重操作与hive环境变量hive.groupby.skewindata存在关系。
当hive.groupby.skewindata=true时,hive不支持多列上的去重操作,并报错:

Error in semantic analysis: DISTINCT on different columns notsupported with skew in data. 

注意:上面示例中的(3)不属于多列上的DISTINCT操作。

select mac,count(1) from log group by mac;  

当某一个mac的值非常多,如果几个mac的hash是一样的,会分到一个reduce,且数量已经超过一个reduce的容量或是处理能力的时候,上面的语句改成 :

hive.groupby.skewindata=true;  
select mac,count(1) from log group by mac;  

 

Group By 语句

  • Map 端部分聚合:
    • 并不是所有的聚合操作都需要在 Reduce 端完成,很多聚合操作都可以先在 Map 端进行部分聚合,最后在 Reduce端得出最终结果。
    • 基于 Hash
    • 参数包括:
      • hive.map.aggr = true 是否在 Map 端进行聚合,默认为True
      • hive.groupby.mapaggr.checkinterval =100000 在 Map 端进行聚合操作的条目数目
  • 有数据倾斜的时候进行负载均衡
    • hive.groupby.skewindata = false
    • 当选项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map 的输出结果集合会随机分布到Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果是相同的 Group By Key有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照 Group ByKey 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个 Reduce中),最后完成最终的聚合操作。

hive.groupby.skewindata变量

从上面groupby语句可以看出,这个变量是用于控制负载均衡的。当数据出现倾斜时,如果该变量设置为true,那么Hive会自动进行负载均衡。

HIVE-2416

Currently when multiple distinct function is used,Hive.groupby.skewindata optimization parameter shall be set false,or else an exception is raised:

Error in semantic analysis: DISTINCT on different columns not supported with skew in data

Skew groupby should support multiple distinct function.

 

© 著作权归作者所有

共有 人打赏支持
Avner
粉丝 8
博文 51
码字总数 46924
作品 0
杭州
程序员
【总结】Apache Sentry 服务简介

Sentry是一个RPC服务,将认证元数据信息存储在关系型数据库,并提供RPC接口检索和操作权限。利用Kerveros支持安全访问。Sentry Service通过后台数据库存储提供认证元数据信息,不处理真实的权...

巧克力黒
2017/08/16
0
0
Apache Hive 2.0.0 发布,数据仓库平台

Apache Hive 2.0.0 发布,完整改进记录如下: Release Notes - Hive - Version 2.0.0 Sub-task [HIVE-8858] - Visualize generated Spark plan [Spark Branch] [HIVE-9139] - Clean up GenSp......

oschina
2016/02/17
3.8K
6
Apache Hive 0.11.0 发布,数据仓库平台

Apache Hive 0.11.0 发布了,Hive是一个基于Hadoop的数据仓库平台。通过hive,我们可以方便地进行ETL的工作。hive定义了一个类似于SQL的查询语言:HQL,能 够将用户编写的QL转化为相应的Map...

oschina
2013/05/17
4K
5
Apache Hive 1.2.0 发布,数据仓库平台

Hive是一个基于Hadoop的数据仓库平台。通过hive,我们可以方便地进行ETL的工作。hive定义了一个类似于SQL的查询语言:HQL,能 够将用户编写的QL转化为相应的Mapreduce程序基于Hadoop执行。 ...

oschina
2015/05/19
4.8K
3
安装配置hive

环境: ubuntu 14.04 hadoop 1.0.1 5.5.46-0ubuntu0.14.04.2 hive 0.9.0 安装配置步骤: 安装mysql sudo apt-get install mysql-serve 在安装过程中会让你配置root用户的密码,去设置的是roo...

z_jordon
2015/12/14
130
0
Apache Hive 2.0.1 发布,数据仓库平台

Apache Hive 2.0.1 发布,完整改进记录如下: Release Notes - Hive - Version 2.0.1 Sub-task * [HIVE-13362] - Commit binary file required for HIVE-13361 Bug [HIVE-9499] - hive.limit......

愚_者
2016/05/27
2K
2
Apache Hive 0.12.0 发布,数据仓库平台

Apache Hive 0.12.0 发布了,Hive是一个基于Hadoop的数据仓库平台。通过hive,我们可以方便地进行ETL的工作。hive定义了一个类似于SQL的查询语言:HQL,能 够将用户编写的QL转化为相应的Map...

oschina
2013/10/16
3K
1
初始Hive —— 深入浅出学Hive(二)

目录: 初始Hive Hive安装与配置 Hive 内建操作符与函数开发 Hive JDBC hive参数 Hive 高级编程 Hive QL Hive Shell 基本操作 hive 优化 Hive体系结构 Hive的原理 第一部分:软件准备与环境规...

东方神剑
2016/01/13
36
0
hive从0.12.0升级到1.2.1步骤详解及填坑

hive升级步骤详解(hive-0.12.0到hive-1.2.1) 升级步骤: 1.关闭当前与hive相关的所有进程 2.备份MySQL的hive数据库 mysqldump -uroot -proot hive > schem_hive-0.12.0.sql 方便升级失败之...

冰公子
2016/06/03
465
0
Hive 2.1.1安装配置

前期工作 安装JDK 安装Hadoop 安装MySQL *** 安装Hive 下载Hive安装包 可以从 Apache 其中一个镜像站点中下载最新稳定版的 Hive, apache-hive-2.1.1-bin.tar.gz。 解压安装Hive 使用以下命令...

JackieYeah
2016/08/20
7K
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
9分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
16分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
20分钟前
0
0
centos 使用yum安装nginx后如何添加模块 10

centos 使用yum安装nginx后如何添加模块 10 centos6.2版本,使用yum来安装了nginx,但是最近需要重新添加模块,所以就傻了,询问下有人知道怎么重新添加模块吗? PS:俺是新手,需要高手救助...

linjin200
23分钟前
0
0
dubbo 资料

dubbo资料网站: https://www.cnblogs.com/a8457013/p/7818925.html

zaolonglei
24分钟前
0
0
大型网站,你是如何架构的?

大型网站,你是如何架构的?

微小宝
26分钟前
0
0
javaScript选框的全选与取消

<div> <input type="button" value="全选" onclick="quan()"> <input type="button" value="取消" onclick="cancel()"> <input type="button" value="反选" onclick="reverse()"> <table> <t......

南桥北木
28分钟前
0
0
七牛云宫静:基于容器和大数据平台的持续交付平台

7 月 6 日上午,在 ArchSummit 2018 深圳站 | 全球架构师峰会上,七牛云工程效率部技术专家宫静分享了《基于容器和大数据平台的持续交付平台》为题的演讲。本文是对演讲内容的整理。
 
 本...

七牛云
34分钟前
1
0
Linux系统下如何查看某个命令的安装位置

1.which + 命令 会出现这个命令的路径,如果不是软链接的话,那么这就是此软件的安装路径;如果是软连接的话,那么进入下一步 2.进入上面的路径下,输入:ls -al 要查照的命令 会出现它的真是...

xiaomin0322
34分钟前
1
0
微信小程序富文本图片处理二

一、将富文本中图片的相对链接地址修改成绝对链接地址 //替换图片链接 data.content = data.content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match......

tianma3798
38分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部