锁屏面试题百日百刷-Hive篇(七)

​    锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题:

1.生产环境中为什么建议使用外部表?

1)因为外部表不会加载数据到Hive,减少数据传输,数据还能共享。

2)Hive不会修改数据,所以无需担心数据的损坏。

3)删除表时,只删除表结构,不删除数据。

2.metastore 安装方式有什么区别?

内嵌模式

内嵌模式使用的是内嵌的 Derby 数据库来存储元数据,也不需要额外起 Metastore 服务。

这个是默认的,配置简单,但是一次只能一个客户端连接,适用于用来实验,不适用于生产环境。

本地元存储

本地安装 mysql 替代 derby 存储元数据,这种安装方式和嵌入式的区别在于,不再使用内

嵌的 Derby 作为元数据的存储介质,而是使用其他数据库比如 MySQL 来存储元数据。hive 服务和 metastore 服务运行在同一个进程中,mysql 是单独的进程,可以同一台机器,也可以在远程机器上。

远程元存储(HiveServer2)

Hive 服务和 metastore 在不同的进程内,可能是不同的机器,该模式需要将

hive.metastore.uris 设置为 metastore 服务器 URL,如果有多个 metastore 服务器,将 URL 之间用逗号分隔,metastore 服务器 URL 的格式为 thrift://127.0.0.1:9083。

3.insert into 和 override write区别?

insert into:将某一张表中的数据写到另一张表中

override write:覆盖之前的内容。

4.写出将text.txt文件放入hive中test表‘2016-10-10’分区的语句,test的分区字段是 l_date

LOAD DATA LOCAL INPATH '/your/path/test.txt' OVERWRITE INTO TABLE test PARTITION (l_date='2016-10-10')

5.Hive如何进行权限控制?

目前hive支持简单的权限管理,默认情况下是不开启,这样所有的用户都具有相同的权限,同时也是超级管理员,也就对hive中的所有表都有查看和改动的权利,这样是不符合一般数据仓库的安全原则的。Hive可以是基于元数据的权限管理,也可以基于文件存储级别的权限管理。

为了使用Hive的授权机制,有两个参数必须在hive-site.xml中设置:

<property>

<name>hive.security.authorization.enabled</name>

<value>true</value>

<description>enable or disable the hive client authorization</description>

</property>

<property>

<name>hive.security.authorization.createtable.owner.grants</name>

<value>ALL</value>

<description>the privileges automatically granted to the owner whenever a table gets created. An

example like "select,drop" will grant select and drop privilege to the owner of the table</description>

</property>

Hive支持以下权限:

Hive授权的核心就是用户(user)、组(group)、角色(role)。

Hive中的角色和平常我们认知的角色是有区别的,Hive中的角色可以理解为一部分有一些相同“属性”的用户或组或角色的集合。这里有个递归的概念,就是一个角色可以是一些角色的集合。

下面举例进行说明:

用户 组

张三 G_db1

李四 G_db2

王五 G_bothdb

如上有三个用户分别属于G_db1、G_db2、G_alldb。G_db1、G_db2、G_ bothdb分别表示该组用户可以访问数据库1、数据库2和可以访问1、2两个数据库。现在可以创建role_db1和role_db2,分别并授予访问数据库1和数据库2的权限。这样只要将role_eb1赋给G_db1(或者该组的所有用户),将role_eb2赋给G_db2,就可以是实现指定用户访问指定数据库。最后创建role_bothdb指向role_db1、role_db2(role_bothdb不需要指定访问那个数据库),

然后role_bothdb授予G_bothdb,则G_bothdb中的用户可以访问两个数据库。

Hive的用户和组使用的是Linux机器上的用户和组,而角色必须自己创建。

角色管理:

--创建和删除角色

create role role_name;

drop role role_name; --展示所有roles

show roles --赋予角色权限

grant select on database db_name to role role_name;

grant select on [table] t_name to role role_name; --查看角色权限

show grant role role_name on database db_name;

show grant role role_name on [table] t_name; --角色赋予用户

grant role role_name to user user_name

--回收角色权限

revoke select on database db_name from role role_name;

revoke select on [table] t_name from role role_name; --查看某个用户所有角色

show role grant user user_name;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值