hive知识点总结3

本文详细介绍了Hive的各种参数类型,包括hiveconf、system、env和hivevar,强调了动态分区和分桶机制的使用及SQL示例。此外,讨论了Hive的权限管理SQL语句和优化策略,如早期数据过滤、分桶抽样、优化Join操作和避免数据倾斜等问题,以及如何通过调整参数和利用分区裁剪等方法提升查询效率。
摘要由CSDN通过智能技术生成
1.hive中有哪些类型的hive参数

hiveconf:hive-site.xml当中的配置变量 可读写

system:系统变量 可读写

env:环境变量 只能读

hivevar:用户自定义,可以自定义一些参数。 可读写

通过${}进行引用,其中system,env下的变量必须以前缀开头

显示表头信息 (只作用与当前会话)

hive --hiveconf hive.cli.print.header=true

.hiverc

tail -10 .hivehistory 查看历史操作
2.详述动态分区以及SQL

hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。

动态分区建的表需要放在静态分区建的后面(因为HDFS上的动态分区目录下不能包含静态分区的子目录

静态分区SP(static partition)与动态分区DP(dynamic partition)的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列实在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。

hive默认情况下没有开启

开启动态分区:

	set hive.exec.dynamic.partition=true;

​	set hive.exec.dynamic.partition.mode=nostrict;
3.详述分桶机制以及列出分桶SQL

分桶则是指定分桶表的某一列,让该列数据按照哈希取模的方式随机、均匀地分发到各个桶文件中。

适用于抽样调查,mapjoin

分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。

对于hive中每一个表、分区都可以进一步进行分桶。

由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。

开启支持分桶(做分桶操作前一定要先开启)

set hive.enforce.bucketing=true;

桶表 抽样查询

select * from bucket_table tablesample(bucket 1 out of 4 on columns);

往分桶表中加载数据

insert into table bucket_table select columns from tbl;

insert overwrite table bucket_tabletbl

创建分桶表

CREATE TABLE psnbucket( id INT, name STRING, age INT)

CLUSTERED BY (age) INTO 4 BUCKETS 

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

加载数据:

insert into table psnbucket select id, name, age from psn31;

抽样

select id, name, age from psnbucket tablesample(bucket 2 out of 4 on age);
4.列出权限管理用到的SQL语句

1、Storage Based Authorization in the Metastore Server

基于存储的授权 - 可以对Metastore中的元数据进行保护,但是没有提供更加细粒度的访问控制(例如:列级别、行级别)。

2、SQL Standards Based Authorization in HiveServer2

基于SQL标准的Hive授权 - 完全兼容SQL的授权模型,推荐使用该模式。

3、Default Hive Authorization (Legacy Mode)

hive默认授权 - 设计目的仅仅只是为了防止用户产生误操作,而不是防止恶意用户访问未经授权的数据。

CREATE ROLE role_name;  -- 创建角色

DROP ROLE role_name;  -- 删除角色

SET ROLE (role_name|ALL|NONE);  -- 设置角色

SHOW CURRENT ROLES;  -- 查看当前具有的角色

SHOW ROLES
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值