Ranger支持对Hive数据按行进行过滤(Row Level Filter),即可以对Select返回的结果按行进行过滤,只显示满足指定条件的行。本文以EMR-4.9.0版本(Ranger 2.1.0)为例,介绍如何将Hive数据按行进行过滤。
前提条件
- 已创建集群,并选择了Ranger服务,详情请参见创建集群。
- 已创建按行过滤的表。
使用限制
该功能仅适用于HiveServer2的场景。例如,Beeline、JDBC和Hue等途径执行的Select语句。
配置Row Level Filter Policy
测试
- 场景:testc用户使用
select
语句,查看表default.test_row_filter中的数据时,只显示符合过滤条件的行。 - 流程:
- 没有配置按行过滤且有权限访问表的用户(例如hadoop用户)使用Beeline连接HiveServer2,执行
select * from default.test_row_filter;
命令,查询default.test_row_filter表的数据,可以显示所有的行。 - testc用户使用Beeline连接HiveServer2,执行
select * from default.test_row_filter;
命令,查询default.test_row_filter表的数据,只能显示id≥10的行。
- 没有配置按行过滤且有权限访问表的用户(例如hadoop用户)使用Beeline连接HiveServer2,执行