MAPREDUCE服务 MRS-SparkSQL用户权限介绍:SparkSQL使用场景及对应权限

时间:2024-06-12 19:16:53

SparkSQL使用场景及对应权限

用户通过SparkSQL服务创建数据库需要加入Hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。

如果用户访问别人创建的表或数据库,需要授予权限。所以根据SparkSQL使用场景的不同,用户需要的权限可能也不相同。

表1 SparkSQL使用场景

主要场景

用户需要的权限

使用SparkSQL表、列或数据库

使用其他用户创建的表、列或数据库,不同的场景需要不同的权限,例如:

  • 创建表,需要“创建”。
  • 查询数据,需要“查询”。
  • 插入数据,需要“插入”。

关联使用其他组件

部分场景除了SparkSQL权限,还可能需要组件的权限,例如:

使用Spark on HBase,在SparkSQL中查询HBase表数据,需要设置HBase权限。

在一些特殊SparkSQL使用场景下,需要单独设置其他权限。

表2 SparkSQL授权注意事项

场景

用户需要的权限

创建SparkSQL数据库、表、外表,或者为已经创建的表或外表添加分区,且Hive用户指定数据文件保存在“/user/hive/warehouse”以外的HDFS目录。

  • 需要此目录已经存在,客户端用户是目录的属主,且用户对目录拥有“读”、“写”和“执行”权限。同时用户对此目录上层的每一级目录都拥有“读”和“执行”权限。
  • 在Spark2x中,在创建HBase的外表时,需要拥有Hive端database的“创建”权限。而在Spark 1.5中,在创建HBase的外表时,需要拥有Hive端database的“创建”权限,也需要拥有HBase端Namespace的“创建”权限。

用户使用load将指定目录下所有文件或者指定文件,导入数据到表中。

  • 数据源为Linux本地磁盘,指定目录时需要此目录已经存在,系统用户“omm”对此目录以及此目录上层的每一级目录拥有“r”和“x”的权限。指定文件时需要此文件已经存在,“omm”对此文件拥有“r”的权限,同时对此文件上层的每一级目录拥有“r”和“x”的权限。
  • 数据源为HDFS,指定目录时需要此目录已经存在,SparkSQL用户是目录属主,且用户对此目录及其子目录拥有“读”、“写”和“执行”权限,并且其上层的每一级目录拥有“读”和“执行”权限。指定文件时需要此文件已经存在,SparkSQL用户是文件属主,且用户对文件拥有“读”、“写”和“执行”权限,同时对此文件上层的每一级目录拥有“读”和“执行”权限。

创建函数、删除函数或者修改任意数据库。

需要授予“管理”权限。

操作Hive中所有的数据库和表。

需加入到supergroup用户组,并且授予“管理”权限。

对部分datasource表赋予insert权限后,执行insert|analyze操作前需要单独对hdfs上的表目录赋予写权限。

当前对spark datasource表赋予Insert权限时,如果表格式为:text|csv|json|parquet|orc,则不会修改表目录的权限。因此,对以上几种类型的datasource表赋予Insert权限后,还需要单独对hdfs上的表目录赋予写权限,用户才能成功对表执行insert|analyze操作。

support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1936.html