Hive版本信息对比0.14.0-2.1.1

Hive版本信息对比0.14.0-2.1.1

目前大数据集群的hive主要版本为0.14.0,版本日期为2014.11.13。为了适应大数据的不断发展和更新换代,特此分享Hive主要版本信息,为版本升级做准备。

Hive分支理解

自2015年6月起,hive有两个主线,master版本和branch-1版本:
1).hive所有的新特性和bug修复都被提交到master版本。自2015年6月起,master线的release被编号为2.x。2.x版本不一定向后兼容1.x。
2).branch-1是用于构建稳定、向后兼容的版本。从这个branch的release被编号为1.x(1.3将是第一个版本)。至少到2016年6月所有重要的bug修复(crashes, wrong results, security issues)应用于master也必须适用于为branch-1。决定港口功能从主为1是自由裁量权的贡献者和提交者。然而没有特性,打破向后兼容性将被接受为1。贡献者和提交者决定将部分特性从master版本移到branch-1版本。而不需要打破向后兼容的特性时,建议使用branch-1。

除了这些主线外,hive有两种类型的分支,release分支和feature分支:
1).当社区准备一个hive release时,release分支由branch-1(1.x)或master(2.x)建立。release分支匹配release的编号(例如,branch-1.2匹配hive 1.2)。对补丁release,分支是由现有的发布分支建立(为了避免从master接新功能)。例如,如果要建立release 1.2.1,branch-1.2.1将始于branch-1.2。一旦release 分支被建立,分支(包括额外补丁)由发布经理自由处理。在一个release 分支建立后,额外的bug修复仍然可以应用于该分支预期的下一个补丁发布。任何bug修复应用到release分支,首先必须被应用到master(和branch-1,如果适用的话)。
2).feature分支用于开发稳定hive的新功能。feature分支的目的是,一旦特性稳定它将被合并回master。

hadoop依赖

master和branch-1在hadoop依赖上的处理是不同的:

branch-1
同时支持hadoop 1.x和2.x。为了编译“shims”、允许这些Hadoop版本兼容,hive通过Maven构建下载不同版本的Hadoop。然而,hive的其余部分只是构建和测试一个单独的Hadoop版本。
Maven构建有两个配置文件,hadoop-1和hadoop-2。构建时,你必须指定你希望使用的配置文件,通过Maven的-P命令行选项。

master
hive的master分支不再支持hadoop 1.x。对大部分的maven命令来说,不需要再指定配置文件,因为hadoop 2.x是默认选择。

版本信息

原始版本:0.14.0
版本日期:2014.11.13
第三方版本信息:HDP2.2.6
目标版本:2.1.1
版本日期:2016.12.8
第三方版本信息:CDH6.0.1

Release 0.14.0

Date:2014年11月12日
Hadoop版本:1.x.y, 2.x.y

新特性
[HIVE-5317] -在hive中执行insert、update、delete满足ACID的全部要求(原子性、一致性、隔离性、持久性)
[HIVE-5775] -引进基于消耗(cost)的控制器
[HIVE-5823] -支持在AvroSerDe中的DECIMAL原始类型
[HIVE-6455] -可伸缩的动态分区和bucketing优化
[HIVE-6469] -在hive命令行的skipTrash选项
[HIVE-6806] -CREATE TABLE 支持 STORED AS AVRO
[HIVE-7036] -get_json_object bug when extract list of list with index
[HIVE-7054] -在向量模型支持ELT、UDF
[HIVE-7068] -集成AccumuloStorageHandler
[HIVE-7090] -支持session级别的临时表
[HIVE-7158] -使用Tez auto-parallelism
[HIVE-7203] - Optimize limit 0
[HIVE-7255] -analyze命令允许指定部分分区
[HIVE-7299] –可配置metadata只在Tez优化
[HIVE-7341] -支持通过HCatalog实例复制table
[HIVE-7390] -在BeeLine 输出(CSV/TSV)可使用单引号配置和选择
[HIVE-7416] -为权限检查认证api调用,提供上下文信息
[HIVE-7430] -实现在Tez中的SMB join
[HIVE-7446] -增加对Avro表增列的支持(ALTER TABLE … ADD COLUMN)
[HIVE-7506] -MetadataUpdater(元数据更新):提供一个机制来编辑一列的静态信息
[HIVE-7509] - Fast stripe level merging for ORC
[HIVE-7547] -在ExecHook增加IP地址和用户名
[HIVE-7587] -获取聚合状态的MetaStore
[HIVE-7654] - A method to extrapolate columnStats for partitions of a table
[HIVE-7826] –在Tez中的动态分区修剪
[HIVE-8531] - Fold is not null filter if there are other comparison filter present on same column

Bug详见:https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12326450&styleName=Text&projectId=12310843

Release 1.0.0

Date:2015年2月4日
Hadoop版本:1.x.y, 2.x.y

无新特性

Bug详见:https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12329278&styleName=Text&projectId=12310843

Release 1.1.0

Date:2015年3月8日
Hadoop版本:1.x.y, 2.x.y

新特性
[HIVE-3405] -用户自定义函数initcap(获得每个单词首字母大写的字符串)
[HIVE-7122] - Storage format for create like table
[HIVE-8435] - Add identity project remover optimization

Bug详见:https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310843&styleName=Text&version=12329363

Release 1.2.0

Date:2015年5月18日
Hadoop版本:1.x.y, 2.x.y

新特性
[HIVE-7998] -增强JDBC驱动程序,使其不需要类规范
[HIVE-9039] -支持union和distinct
[HIVE-9188] - BloomFilter support in ORC
[HIVE-9277] - Hybrid Hybrid Grace Hash Join
[HIVE-9302] -Beeline命令添加到注册本地jdbc驱动程序的名称和jar
[HIVE-9780] - Add another level of explain for RDBMS audience
[HIVE-10038] - Add Calcite’s ProjectMergeRule.
[HIVE-10099] -可使常量合并为Decimal

Bug详见:https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12329345&styleName=Text&projectId=12310843

Release 2.0.0

Date:2016年2月15日
Hadoop版本:2.x.y

新特性
[HIVE-686] -增加用户自定义函数substring_index
[HIVE-3404] -创建quarter自定义函数
[HIVE-7926] -query fragment execution, I/O and caching的守护进程
[HIVE-10591] - Support limited integer type promotion in ORC
[HIVE-10592] - ORC file dump in JSON format
[HIVE-10673] -对Tez的动态分区hash join
[HIVE-10761] -创建基于codahale的hive矩阵系统
[HIVE-10785] - Support aggregate push down through joins
[HIVE-11103] -增加自定义函数BROUND
[HIVE-11461] -将AND/OR转换成IN结构
[HIVE-11488] -在HS2(hiveserver2)日志增加会话ID和查询ID信息
[HIVE-11593] -增加aes_encrypt、aes_decrypt用户自定义函数
[HIVE-11600] -增加多列sql支持,如(x,y…) in (…)
[HIVE-11684] - Implement limit pushdown through outer join in CBO
[HIVE-11699] -支持引用表名中使用特殊字符
[HIVE-11706] -实现"show create database"
[HIVE-11775] - Implement limit push down through union all in CBO
[HIVE-11785] -在LazySimpleSerDe中支持ESC、回车、换行
[HIVE-11976] - Extend CBO rules to being able to apply rules only once on a given operator
[HIVE-12080] -对parquet table支持自动类型扩展(int->bigint & float->double)

Bug详见:https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12332641&styleName=Text&projectId=12310843

Release 2.1.0

Date:2016年6月20日
Hadoop版本:2.x.y

新特性
[HIVE-12270] - Add DBTokenStore support to HS2 delegation token
[HIVE-12634] -增加kill ACID事务的命令
[HIVE-12730] -MetadataUpdater:提供一个机制来编辑表(或分区)的基本静态信息
[HIVE-12878] -支持文本文件和其他格式的向量化
[HIVE-12994] -支持NULLS FIRST/NULLS LAST sql排序选项
[HIVE-13029] - NVDIMM support for LLAP Cache
[HIVE-13095] -支持视图的列授权
[HIVE-13125] -支持column/row的屏蔽和过滤
[HIVE-13307] - LLAP: Slider package should contain permanent functions
[HIVE-13418] -HS2 HTTP模式应支持X-Forwarded-Host头的授权/审计
[HIVE-13475] -在over子句里允许使用聚合函数
[HIVE-13736] -视图的默认输入输出格式为TXT文本

Bug详见:https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12334255&styleName=Text&projectId=12310843

Release 2.1.1

Date:2016年12月8日
Hadoop版本:2.x.y

新特性
[HIVE-18049] -在hive on Tez上提供对集群表的全局sort

Bug详见:https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12335838&styleName=Text&projectId=12310843

2.1.1+cdh6.0.1

Hive组件

新特性

对parquet文件的向量化查询支持
UNION DISTINCT支持
NULLS FIRST/NULLS LAST支持
增加对窗口和分析函数的支持
表或分区的静态信息编辑
SHOW CREATE DATABASE支持
支持IN子句的多列查询
支持更多的Hive函数

不兼容的改变

UNION ALL语句涉及从不同类型组转换数据类型不再使用隐式类型
OFFLINE和NO_DROP选项从表和分区DDL语句中移除
DESCRIBE 查询语法变化
CREATE TABLE变化:期数和冒号不再允许在列名
在HiveQL中保留关键字和不保留关键字的变化
Hive API的变化
Hive配置变化
HiveServer2 Thrift API代码重打包导致类文件位置的变化
Values Returned for Decimal Numbers Are Now Padded with Trailing Zeroes to the Scale of the Specified Column
Hive日志框架转向SLF4J / Log4j 2
从Hive移除不宜用的parquet java类
移除JDBC、Counter-based HBase-based统计信息收集机制
S3N连接器从CDH6.0移除
Columns Added to TRowSet Returned by the Thrift TCLIService#GetTables Request
增加了ESC、回车、换行字符对文本文件的支持(LazySimpleSerDe)

Hive on Spark

Dynamic RDD Caching for Hive on Spark
Optimized Hash Tables Enabled for Hive on Spark

不支持的特性

AccumuloStorageHandler (HIVE-7068)
ACID (HIVE-5317)
Built-in version() function is not supported (CDH-40979)
Cost-based Optimizer (CBO)
Explicit Table Locking
HCatalog - HBase plugin
Hive Authorization (Instead, use Apache Sentry.)
Hive on Apache Tez
Hive Local Mode Execution

Hive Metastore - Derby
Hive Web Interface (HWI)
HiveServer1 / JDBC 1
HiveServer2 Dynamic Service Discovery (HS2 HA) (HIVE-8376)
HiveServer2 - HTTP Mode (Use THRIFT mode.)
HPL/SQL (HIVE-11055)
LLAP (Live Long and Process framework)
Scalable Dynamic Partitioning and Bucketing Optimization (HIVE-6455)
Session-level Temporary Tables (HIVE-7090)
Table Replication Across HCatalog Instances (HIVE-7341)

主要新特性

SQL相关

1.增加自定义函数initcap、substring_index、quarter、BROUND、aes_encrypt、aes_decrypt
可以通过SHOW FUNCTIONS;和DESCRIBE ;查看详细内容
2.支持多列的结构,如(x,y…) in (…)
Hive版本信息对比0.14.0-2.1.1_第1张图片
3.create like table复制表结构,同create table a as select * from b where 1=2;
4.支持union distinct、NULLS FIRST/NULLS LAST选项
增加了HiveSQL对union distinct子句的支持。SORT BY, CLUSTER BY, ORDER BY, LIMIT, DISTRIBUTE BY可以在查询语句末不带括号指定。但在union all前指定会导致编译错误。Union子句等同于union distinct。
NULLS FIRST/NULLS LAST选项可以用来排序空值所在位置,配合ORDER BY子句使用。hive遵循SQL:2003标准这个特性,但是SQL标准没有指定默认的行为。默认情况下在hive,null值排序低于非空值。这意味着NULLS FIRST是ASC的默认顺序,最后NULLS LAST是DESC默认顺序。
在这里插入图片描述
5.在over子句里允许使用聚合函数,类似oracle语法,如COUNT(a) OVER(PARTITION BY c)参见博客:https://www.cnblogs.com/xiaozhang123/p/7311097.html
同窗口函数使用distinct;
使用distinct分组语句时,支持order by和窗口函数子句;
支持在over子句中使用聚合函数。
6.支持通过join聚合下推;支持在CBO中通过outer join、union all实现限制下推
7. show create database查看创建数据库的语句
SHOW CREATE DATABASE database1;

语法相关

1.可使常量合并为Decimal
2.支持引用表名中使用特殊字符
3.在LazySimpleSerDe中支持ESC、回车、换行
4.对parquet table支持自动类型扩展(int->bigint & float->double)

其他

1.对parquet文件的向量化支持
默认情况下,hive查询执行引擎一次处理表的一行。单行数据在下一行之前,经过查询中所有的运算符处理,导致CPU使用率很低。在矢量化查询执行中,数据行批处理在一起,表示为一组列向量。然后查询引擎处理这些向量的列,这大大减少了CPU使用率等典型的查询操作,如scan、filter、aggregate、join。
通过设置属性hive.vectorized.execution.enabled为true,实现hive查询向量化。在CDH5和CDH6,默认这个属性被设置为true。但在CDH5中,矢量化查询执行只有可能是ORC-formatted表(Cloudera建议不使用)。相反,Cloudera建议你使用parquet表,因为所有CDH组件支持这种格式。在CDH6中,查询支持向量化parquet表。
2.表或分区的静态信息编辑
e.g.修改表的行数为1000:ALTER TABLE table1 UPDATE STATISTICS SET (‘numRows’=‘1000’);
3.在HS2(hiveserver2)日志增加会话ID和查询ID信息
4.支持视图的列授权
5.支持column/row的屏蔽和过滤
6.视图的默认输入输出格式为TXT文本

参考文档

change log:https://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=12310843&version=12329278
hive jira:https://issues.apache.org/jira/browse/HIVE
官方文档:https://cwiki.apache.org/confluence/display/Hive/HowToContribute#HowToContribute-UnderstandingHiveBranches
CDH文档:https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_600_new_features.html#hive_windowing_and_analytics_function_support

你可能感兴趣的:(Hive版本信息对比0.14.0-2.1.1)