分享

hive3系列:新功能介绍

nettman 2019-5-23 13:12:36 发表于 介绍解说 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 9905
本帖最后由 nettman 于 2019-5-23 13:16 编辑
问题导读

1.Hive事务做了什么改进?
2.Spark与Hive集成提供了什么组件?
3.Hive安全性默认使用什么?


这个版本中有什么新东西:Apache Hive
hvie 3.1包括物化视图的分区,这可以提高查询响应能力和维护修复。

工作量管理

使用工作负载管理,您可以配置谁使用资源,可以使用多少以及Hive响应资源请求的速度。管理资源对于Hive LLAP(低延迟分析处理)至关重要,尤其是在多租户环境中。使用工作负载管理,您可以创建资源池并分配资源以满足可用性需求,并防止对这些资源的争用。工作负载管理改进了在Hive LLAP上运行的查询的并行查询执行和集群共享,还提高了非LLAP查询的性能。工作负载管理可减少大型集群中的资源不足。您可以使用Hive查询语言在命令行上实现工作负载管理。

事务改进

成熟版本的ACID(原子性,一致性,隔离性和持久性)事务处理和低延迟分析处理(LLAP)在Hive和HDP 3.0中发展。增强ACID表作为HDP 3.0中的默认表类型,没有性能或操作过载。使用ACID表操作有助于遵守GDPR(通用数据保护法规)要求被遗忘的权利。通过更强的事务保证和更简单的SQL命令语义,简化了应用程序开发和操作。不需要存储ACID表,因此维护更容易。不再需要在Hive表中执行ACID删除操作。

物化视图

随着事务语义的改进,出现了高级优化,例如物化视图重写和自动查询缓存。通过这些优化,您可以部署新的Hive应用程序类型。由于多个查询经常需要相同的中间汇总或连接表,因此可以通过预先计算和将中间表缓存到视图中来避免代价高昂的重复查询部分共享。查询优化器自动利用预先计算的缓存,从而提高性能。例如,物化视图可提高商业智能(BI)和仪表板应用程序中的连接和聚合查询的速度。

Kafka主题的连接接,低延迟Hive查询

可以在单个命令中从Kafka主题在Hive中创建Druid表。此功能通过消除Kafka交付和查询德鲁伊之间的数据处理步骤,简化了对Kafka数据的查询。


Spark与Hive集成

您可以使用Hive 3从Apache Spark和Apache Kafka应用程序查询数据,而无需解决方法。Hive Warehouse Connector支持从Spark读取和编写Hive表。

Hive安全性改进

Apache Ranger默认保护Hive数据。为满足客户对并发性改进的需求,ACID对GDPR(通用数据保护法规)的支持,渲染安全性和其他功能,Hive现在严格控制文件系统和计算机内存资源。通过额外的控制,Hive可以更好地优化共享文件和YARN容器中的工作负载。Hive控制文件系统越多,Hive就越能保护数据安全。

查询结果缓存

Hive过滤并缓存类似或相同的查询。Hive不会重新计算未更改的数据。当数百或数千名BI工具和Web服务用户查询Hive时,缓存重复查询可以大大减轻负载。

信息模式数据库

将Hive服务添加到集群时,Hive会从JDBC数据源创建两个数据库:information_schema和sys。所有Metastore表都映射到您的表空间,并在sys中可用。information_schema数据显示系统的状态,类似于sys数据库数据。您可以使用SQL标准查询来查询information_schema,这些查询可以从一个DBMS移植到另一个DBMS。


关注公众号,获取更多资源:



领取100本书+1T资源
http://www.aboutyun.com/forum.php?mod=viewthread&tid=26480

大数据5个项目视频
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25235

原文链接
https://blog.csdn.net/sunwukong_hadoop/article/details/86240707

本帖被以下淘专辑推荐:

加微信w3aboutyun,可拉入技术爱好者群

已有(3)人评论

跳转到指定楼层
nettman 发表于 2019-5-23 13:16:34
补充:
说明:之前查了资料得到hive3.0 及以上版本是支持ACID的,但是在实际操作中并没有实现delete功能,为了节省时间之间将原来存储格式为textfile格式的内部表修改为存储格式为orcfile的orc表,经过实操,发现实现了delete功能,且性能提升一倍左右。

另:测试的内存配置为垃圾8G,执行引擎为yarn。


[mw_shl_code=sql,true]# 老思路 cst_bsc_inf_dplt 全量表 按客户ID分桶
create table if not exists cst_bsc_inf_dplt(
  cst_id string,
  ip_id string,
  .......,
  rmrk_1 string)
  comment 'this is the custormer_bastic_information_copy view table'
  clustered by (cst_id) into 8 buckets
  row format serde 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' with serdeproperties ('field.delim'='|@|')
  store as textfile tblproperties ('serialization.encoding'='utf-8');

# 新思路 将cst_bsc_inf_dplt建立成ORC表 按客户ID分桶
create table if not exists cst_bsc_inf_dplt(
  cst_id string,
  ip_id string,
  .......,
  rmrk_1 string)
  comment 'this is the custormer_bastic_information_copy view table'
  clustered by (cst_id) into 8 buckets
  store as orcfile tblproperties ('serialization.encoding'='utf-8','transactional'='true');



=======调优前=======
(老思路 textfile表:匹配全量表与增量表相同的cst_id,然后进行全表覆写  千万级别全量数据5.6G + 增量数据 2.5M(1100条左右)   7分钟)

sql脚本:
use cst_lbl;
insert overwrite table cat_bsc_inf_dplt select * from cat_bsc_inf_dplt_mid union all(select a.* from cat_bsc_inf_dplt a left join cat_bsc_inf_dplt_mid b on 1=1 and a.cst_id=b.cst_id where b.cst_id is null);
exit;

=======调优后=======
(新思路 orc表:先查出增量表中的cst_id,全量表与之相同的cst_id整条数据删除;然后将增量表全部数据整体插入到增量表中。千万级别全量数据5.6G + 增量数据 2.5M(1100条左右)  3分钟)

sql脚本:
use cst_lbl;
delete from cat_bsc_inf_dplt where cst_id in (select cst_id from cat_bsc_inf_dplt_mid);
insert into cat_bsc_inf_dplt select * from cat_bsc_inf_dplt_mid;
exit;
![/mw_shl_code]


原文:https://blog.csdn.net/lukabruce/article/details/87874879


回复

使用道具 举报

atrox 发表于 2020-10-30 18:43:27
学到了 感谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条