更新时间:2024-12-11 GMT+08:00
FlinkSQL行级过滤
本章节适用于MRS 3.3.1及以后版本。
使用场景
使用FlinkSQL时支持设置行级别过滤条件,可以使指定用户只能访问授权过的行,隐藏未授权的行数据。
前提条件
- 集群已启用Kerberos认证(安全模式),已安装Ranger、Hive、Flink等服务且服务运行正常。
- 已创建需要配置权限的用户、用户组或Role,且用户已加入hive组。
- 该特性仅支持在FlinkServer平台使用。
- FlinkSQL需要使用default方言。
- 过滤条件中的字段大小写要与FlinkSQL中字段大小写一致。
- 该特性不支持Hive视图表。
配置FlinkSQL行过滤流程
- 配置FlinkServer自定义参数。
- 登录FusionInsight Manager。
- 选择“集群 > 服务 > Flink > 配置 > 全部配置 > FlinkServer(角色) > 自定义 > flink.customized.configs”。
- 添加名称为“table.ranger.security.authorization” ,值为“true”的自定义参数,单击“保存”,根据界面提示保存参数。
- 单击“实例”,勾选所有FlinkServer实例,选择“更多 > 重启实例”,根据界面提示重启FlinkServer实例。
- 为指定用户配置Hive行级别数据过滤,详情可参考Hive行级别数据过滤。
如为test用户在“default”库中的“datagen”表添加“a<>1”过滤条件。
- 使用权限配置完成的用户通过FlinkServer提交FlinkSQL作业,详情可参考如何创建FlinkServer作业。
SQL示例如下:
CREATE CATALOG myhive WITH ( 'type' = 'hive', 'hive-version' = '3.1.0', 'default-database' = 'default', 'cluster.name' = 'flink_hive' ); CREATE TABLE print (a INT) WITH ('connector' = 'print'); CREATE TABLE IF NOT EXISTS myhive.`default`.datagen (a INT) WITH ( 'connector' = 'datagen', 'rows-per-second' = '1' ); set table.sql-dialect = default; insert into print select * from myhive.`default`.datagen;
在Flink作业原生界面可查看已设置的过滤条件,如下表示“a<>1”过滤条件。
父主题: Flink企业级能力增强