HIVE参数

命名空间 读写权限 含义
hiveconf 可读写 hive-site.xml当中的各配置变量 例:hive --hiveconf hive.cli.print.header=true 只当前会话有效
system 可读写 系统变量,包含JVM运行参数等 例:set system:user.name=root 当前会话有效 在命令行中hive>
env 只读 环境变量 例:env:JAVA_HOME
hivevar 可读写 例:hive -d val=key 当前cli有效 启动hive时加入参数(用的比较少)

a, 在命令行输入 set;当前会话中的所有变量都展示出来

b,在家目录.hivehistory中有敲过端所有命令和结果

c,家目录.hiverc中可以设置参数(hive的参数初始化)

d,set system:user.name=lisi; 设置当前用户为lisi

详述动态分区以及SQL

动态分区

动态分区: 数据自动分区,和静态分区相比,数据不需要在添加的时候直接指定分区了

1 开启动态分区

(必须设置的参数)

set hive.exec.dynamic.partition=true

set hive.exec.dynamic.partitohn.mode=nonstricet(不是no是non)

strict时至少有一个静态分区

(可选参数)

set hive.exec.max.dynamic.partitions.pernode;

每一个执行mr节点上,允许创建的动态分区的最大数量(100)

set hive.exec.max.dynamic.partitions;

所有执行mr节点上,允许创建的所有动态分区的最大数量(1000)

set hive.exec.max.created.files;

所有的mr job允许创建的文件的最大数量(100000)

2 创建表

    create table tb_user2(id int,name string,age int,sex string,likes array<string>,addrs map<string, string>)row formatdelimitedfields terminated by ","collection items terminated by "-"map keys terminated by ":"lines terminated by "\n";

创建分区表

create table tb_user3(id int,name string,likes array<string>,addrs map<string, string>)partitioned by(age int,sex string)row formatdelimitedfields terminated by ","collection items terminated by "-"map keys terminated by ":"lines terminated by "\n";

from tb_user2 insert into tb_user3 partition(age,sex)select id,name,likes,addrs,age,sex;

结果

静态分区块,动态分区开启了mapreduce任务,所以慢

hive 视图

1 不支持物化视图,每次视图都是一个子查询

2 只能查询

分桶

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

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

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

主要适用场景:数据抽样

抽样表: TABLESAMPLE (BUCKET x OUT OF y [ON colname])

TABLESAMPLE子句允许用户对表中数据抽样,而不是获取全表数据。 TABLESAMPLE子句可以跟在任何表的from子句之后。桶从1开始计数。colname表示通过哪列进行抽样。colname可以是表中非分区列或者rand()表示对一整行而非单个列进行抽样。表中的记录根据指定的列分桶到y个桶中(从1到y)。返回属于x桶的列。

下面SQL语句表示source表中分桶为32个桶之后返回第三个桶的数据。's’是表的别名:

SELECT * FROM source TABLESAMPLE(BUCKET 3 OUT OF 32 ON rand()) s;

上面的效率不高

一般情况下,TABLESAMPLE会扫描整张表来获取抽样数据,效率不高。在创建表的时候可以通过clustered by子句指定一列或几列将表的数据先使用hash分区。如果TABLESAMPLE子句指定的列和clustered by子句中的列一样,TABLESAMPLE子句只扫描表中需要的hash分区并返回:

如果上面例子中,表source创建的时候使用了’clustered by id into 32 buckets’,则:

TABLESAMPLE(BUCKET 3 OUT OF 16 ON id)

TABLESAMPLE(BUCKET X OUT OF y ON id)

N:桶的个数,一共多少桶 – 例如32个

x:第一个取端桶 --例如2

y:桶的个数或者因子,可以理解为步长-- 例如 4

32/4=8 , 取8份数据

2 ,6,10,14…30

1 开启分桶

set hive.enforce.bucketing=true;

2 创建分桶表

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

CLUSTERED BY (age) INTO 4 BUCKETS

ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’;

3 导入数据(从其他表中)

insert into tb_bucket select id,name,age from tb_user2;

4 进行分桶抽样

select * from tb_bucket tablesample(bucket 2 out of 4);

权限管理

三种授权方式

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

修改权限为hiveserver2

1 修改服务器配置文件

<property><name>hive.security.authorization.enabled</name><value>true</value>
</property>
<property><name>hive.server2.enable.doAs</name><value>false</value>
</property>
<property><name>hive.users.in.admin.role</name><value>root</value>
</property>
<property><name>hive.security.authorization.manager</name><value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
</property>
<property><name>hive.security.authenticator.manager</name><value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>

2 服务端启动hiveserver2;客户端通过beeline进行连接

3 使用命令对权限进行管理

CREATE ROLE role_name;  -- 创建角色
DROP ROLE role_name;  -- 删除角色
SET ROLE (role_name|ALL|NONE);  -- 设置角色
SHOW CURRENT ROLES;  -- 查看当前具有的角色
SHOW ROLES;  -- 查看所有存在的角色

启动hiveserver2;客户端通过beeline进行连接

3 使用命令对权限进行管理

CREATE ROLE role_name;  -- 创建角色
DROP ROLE role_name;  -- 删除角色
SET ROLE (role_name|ALL|NONE);  -- 设置角色
SHOW CURRENT ROLES;  -- 查看当前具有的角色
SHOW ROLES;  -- 查看所有存在的角色

BigBrother的大数据之旅Day 11 hive(2)相关推荐

  1. BigBrother的大数据之旅Day 10 hive(1)

    HIVE 1 一些概念 HIve存在的目的:非编程人员使用mapreduce进行分析 HIVE:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功 ...

  2. BigBrother的大数据之旅 Day 5 负载均衡

    BigBrother的大数据之旅 Day 5 负载均衡 学习目标: 掌握nginx集群 nginx的配置文件基本配置 Location(难点,重点) 一个配置属性:根据用户的请求地址,去服务器上匹配文 ...

  3. BigBrother的大数据之旅 Day 1 Linux(1)

    Today is a new day! 1 scala是大数据的主流编程语言 Scala是一种强大的JVM语言,混合了函数式和面向对象编程范式 2 大数据的本质为:分布式计算 3 大数据中常见的数据类 ...

  4. BigBrother的大数据之旅Day 12 Hbase(1)

    HBASE (Hadoop Database)是个高可用,高性能, 面向列可伸缩.实时读写的分布式数据库 Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase ...

  5. BigBrother的大数据之旅Day 13 hbase(2)

    HBase(2) 详述人员角色表的设计思路以及实现 思路:两个部分的信息分别保存到两张表中,因为hbase是列存储的表,一般存储非关系数据,就像记笔记一样,把关键点写上. 第一张表: 个人信息表 ro ...

  6. BigBrother的大数据之旅Day 14 某项目流程

    某平台日志项目流程 架构分析 1 埋点程序把数据 以url的方式提交给nginx服务器 2 nginx服务器把日志信息(文本文件)保存到本地硬盘 3 flume,安装中nginx上通过主动方式读取日志 ...

  7. BigBrother的大数据之旅Day 15 sqoop

    sqoop part one 1 数据迁移工具 2 通常用于hdfs和关系型数据库之间 3 实质是mapreduce 4 数据的导入导出是从hdfs的角度来说的,谁让sqoop是apache的东西呢 ...

  8. BigBrother的大数据之旅 Day 4 Linux(4)

    学习目标: 掌握shell的基本语法 变量 本地变量:作用在当前shellscript中 环境变量:作用在当前的shell(bash)及其子shell(bash) 局部变量 特殊变量 :$#, $?, ...

  9. BigBrother的大数据之旅Day 2 Linux(2)

    1vi和vim vim是vi的升级版,加入了高亮更适合编程,是liunx中的文本编辑器 1.1vim + 文件: 打开文件,光标移动到末 1.2 vim +数字 文件: 打开文件,光标移动到数字行 1 ...

最新文章

  1. emacs python环境配置
  2. jquery判断方法是否存在_判断图中是否有环的三种方法
  3. winsock select模型实现
  4. 每天一点Linux --- 目录的可执行权限
  5. linux命令学习记录一
  6. Spark精华问答 | Spark和Hadoop的架构区别解读
  7. Vue学习笔记(二) —— 组件开发
  8. 销售99绝招 成功没商量
  9. 2012.4.16总结(三)
  10. 使用sm2签名并验签efi文件
  11. Linux共享文件夹
  12. c语言英文背单词软件下载,英语背单词软件
  13. 卡诺模型案例分析_需求分析神器 | 如何用卡诺模型分析需求
  14. 小说平台系统开发(PHP)
  15. 航摄比例尺、成图比例尺、地面分辨率与航摄设计用图比例尺
  16. 2020年中国互联网数据中心行业现状及发展趋势分析
  17. Raspberry-Pi-PICO系列--第七篇 创建自己的工程
  18. 电脑装windows和安卓双系统引导_Remix mini安卓电脑,玩的不只是Windows那张皮
  19. mongoDB数据库安装报错问题SocketException: Error connecting to和Shutting down
  20. 微擎系统内置的所有函数大全,一共5435个,可以当作微擎开发函数手册来查看(下篇)

热门文章

  1. java 矫正鱼眼图像_鱼眼图像校正
  2. Axure交互样式的简单使用介绍
  3. Java面向对象(类的无参和带参)
  4. 血泪教训,机械硬盘间歇性罢工,机械硬盘不显示或者显示“硬盘出现致命错误”怎么办
  5. Codeforces Round #540 (Div. 3) D. Coffee and Coursework 二分
  6. 计算机专业可以考天文学研究生吗,天文学专业强势高校来袭 看似冷门考生却挤破头都想去...
  7. 高效mongoDB开发规范
  8. MST53XXB 35V,200mA,1.9uA,低压线性稳压器
  9. 运放稳定性连载14:RO何时转变为ZO?(3)
  10. SAP se11透明表添加字段时报错:字段级的结构更改(转换表xxxxxx)