Hive技术拾遗

1. SELECT语句可以使用正则表达式做列选择,下面的语句查询除了ds和h 之外的所有列:SELECT `(ds|hr)?+.+` FROM
sales

2. LEFT SEMI JOIN的限制是,
JOIN子句中右边的表只能在ON子句中设置过滤条件,在WHERE子句、SELECT子句或其他地方过滤都不行。

3. Hadoop和Hive中数据都是用UTF-8编码的,所以, 所有中文必须是UTF-8编码, 才能正常使用。

4. count(distinct)  
当前的Hive不支持在一条查询语句中有多Distinct。如果要在Hive查询语句中实现多Distinct,需要使用至少n+1条查询语句(n为
distinct的数目),前n条查询分别对n个列去重,最后一条查询语句对n个去重之后的列做Join操作,得到最终结果。

5. HAVING  
不支持HAVING操作。如果需要这个功能要嵌套一个子查询用where限制

6. Join中处理null值的语义区别   
SQL标准中,任何对null的操作(数值比较,字符串操作等)结果都为null。Hive对null值处理的逻辑和标准基本一致,除了Join时的特殊
逻辑。这里的特殊逻辑指的是,Hive的Join中,作为Join key的字段比较,null=null是有意义的,且返回值为true。

7. 分号字符

分号是SQL语句结束标记,在HiveQL中也是,但是在HiveQL中,对分号的识别没有那么智慧,例如:

select concat(cookie_id,concat(‘;‘,’zoo’)) from c02_clickstat_fatdt1 limit
2;
FAILED: Parse Error: line 0:-1 cannot recognize input ‘<EOF>‘ in
function specification
   
可以推断,Hive解析语句的时候,只要遇到分号就认为语句结束,而无论是否用引号包含起来。
   
解决的办法是,使用分号的八进制的ASCII码进行转义,那么上述语句应写成:
select
concat(cookie_id,concat(‘\073‘,‘zoo‘)) from c02_clickstat_fatdt1 limit 2;

8. Hive编译器将一个Hive
QL转换操作符。操作符Operator是Hive的最小的处理单元,每个操作符代表HDFS的一个操作或者一道MapReduce作业。操作符如下:

    TableScanOperator:扫描hive表数据
   
ReduceSinkOperator:创建将发送到Reducer端的<Key,Value>对
   
JoinOperator:Join两份数据
    SelectOperator:选择输出列

    FileSinkOperator:建立结果数据,输出至文件
   
FilterOperator:过滤输入数据
    GroupByOperator:GroupBy语句

    MapJoinOperator:/*+mapjoin(t) */
   
LimitOperator:Limit语句
    UnionOperator:Union语句

   
Hive通过ExecMapper和ExecReducer执行MapReduce任务。在执行MapReduce时有两种模式,即本地模式和分布式模式

时间: 2024-10-07 17:01:28

Hive技术拾遗的相关文章

HIVE简明教程

完整PDF下载:<HIVE简明教程> 前言 Hive是对于数据仓库进行管理和分析的工具.但是不要被“数据仓库”这个词所吓倒,数据仓库是很复杂的东西,但是如果你会SQL,就会发现Hive是那么的简单,简单到甚至不用学就可以使用Hive做出业务需求所需要的东西. 但是Hive和SQL毕竟不同,执行原理.优化方法,底层架构都完全不相同. 大数据离线分析使用Hive已经成为主流,但是目前市面上Hive相关的中文书籍只有一本<Hive编程指南>,对于不懂技术的数据分析人员来说,这本书有些繁琐

基于 Hive 的文件格式:RCFile 简介及其应用

转载自:https://my.oschina.net/leejun2005/blog/280896 Hadoop 作为MR 的开源实现,一直以动态运行解析文件格式并获得比MPP数据库快上几倍的装载速度为优势.不过,MPP数据库社区也一直批评Hadoop由于文件格式并非为特定目的而建,因此序列化和反序列化的成本过高. 1.hadoop 文件格式简介 目前 hadoop 中流行的文件格式有如下几种: (1)SequenceFile SequenceFile是Hadoop API 提供的一种二进制文件

hive的数据类型和数据模型

关系数据库里有表(table),分区,hive里也有这些东西,这些东西在hive技术里称为hive的数据模型.今天本文介绍hive的数据类型,数据模型以及文件存储格式.这些知识大家可以类比关系数据库的相关知识. 首先我要讲讲hive的数据类型. Hive支持两种数据类型,一类叫原子数据类型,一类叫复杂数据类型. 原子数据类型包括数值型.布尔型和字符串类型,具体如下表所示: 基本数据类型 类型 描述 示例 TINYINT 1个字节(8位)有符号整数 1 SMALLINT 2字节(16位)有符号整数

setCapture只能作用于鼠标不可作用于键盘等其它事件

处理的优点非常类似于流媒体的优点.分析能够立即开始,而不是等待所有的数据被处理.而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中.这对于大型文档来说是个巨大的优点.事实上,应用程序甚至不必解析整个文档:它可以在某个条件得到满足时停止解析. 由于需要分别处理不同情况,所以上述代码用多种方式来定义这两个宏.第一个 #if 用于判断编译器是否支持新式枚举,若支持新特性,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控

IT研发老兵跳槽记之(六):上将伐谋

孙子兵法说:"上将伐谋,其次代交,再次伐兵,其下攻城".令人非常佩服,战争自古以来哪怕是战胜往往也是伤敌一千,自损八百的模式,所以上将伐谋尤为重要. 我们的跳槽其实和攻城略地很相似,一定是伐谋者胜算大.真正进入面试后的技术环节没有什么技巧,应该像前边所讲的"技术进阶篇"去功在平时并进行有的放矢的重点准备.其它环节我们都可以谋划的更为详细周全,既要减少技术环节面试失败的风险,又能提高其它环节成功的概率. 接下来以我自己为例,分以下3点重点说明. 一.跳槽前的心理准备

Phoenix在2345公司的实践(转)

本文介绍Phoenix在2345公司的实践,主要是实时查询平台的背景.难点.Phoenix解决的问题.Phoenix-Sql的优化以及Phoenix与实时数仓的融合思路.具体内容如下: 实时数据查询时客服系统中一个很重要的模块,提供全公司所有主要产品的数据的查询功能,由于各产品的数据库.数据表错综复杂.形式多样,在平台建设的初期走了很多弯路.本文后续会详细介绍实时数据查询迭代升级的过程.期间遇到的问题以及对应的解决方案. 目前公司的数据库类型主要有MySQL和MongoDB.它们本身是异构的,二

大数据时代的技术hive:hive介绍

我最近研究了hive的相关技术,有点心得,这里和大家分享下. 首先我们要知道hive到底是做什么的.下面这几段文字很好的描述了hive的特性: 1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析. 2.Hive是建立在 Hadoop

[转帖]我最近研究了hive的相关技术,有点心得,这里和大家分享下。

我最近研究了hive的相关技术,有点心得,这里和大家分享下. https://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html 首先我们要知道hive到底是做什么的.下面这几段文字很好的描述了hive的特性: 1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点是学习成本低,可以通过类SQL语句快速实

大数据(hadoop,hive,hbase,spark,flume等)各技术间的关系

大数据由一系列技术组成,那他们之间的关系是怎么组成的ne,请看下图: hadoop主要做了文件存储系统和提供了一个相对比较弱的mr处理数据的方案 hive是在mr和文件存储系统上面做的升级. sprak+hbase+hadoop主要解决的是hadoop实时处理数据比较弱的问题 原文地址:https://www.cnblogs.com/jueshixingkong/p/12004671.html