文档首页> MapReduce服务 MRS> 组件操作指南(阿布扎比区域)> 使用Spark2x> Spark2x常见问题> SQL和DataFrame> 在spark-beeline中创建临时表/视图时,报HDFS目录无权限操作的错误
更新时间:2022-02-22 GMT+08:00

在spark-beeline中创建临时表/视图时,报HDFS目录无权限操作的错误

问题

在普通模式下,用户在spark-beeline中创建临时表或创建视图时,报“Permission denied”的错误,这个错误表明HDFS目录无权限操作。错误日志信息如下:

org.apache.hadoop.security.AccessControlException Permission denied: user=root, access=EXECUTE, inode="/tmp/spark/sparkhive-scratch/omm/e579a76f-43ed-4014-8a54-1072c07ceeff/_tmp_space.db/52db1561-60b0-4e7d-8a25-c2eaa44850a9":omm:hadoop:drwx------

回答

在普通模式下,当使用非omm用户(例如root用户)执行启动spark-beeline的命令时,在未指定“-n”时用户为root,而启动spark-beeline后,JDBCServer会创建一个HDFS新目录,由于当前版本启动JDBCServer的用户是omm,而在DataSightV100R002C30以前的版本是root用户,因此当前该HDFS目录的owner为omm、group为hadoop。在spark-beeline中创建临时表或视图时会使用该HDFS目录,此时是root用户,但是root用户在HDFS中是一个普通用户,因此没有权限操作omm用户的HDFS目录,从而报“Permission denied”的错误。

综上所述,在普通模式下,只有omm用户可以创建临时表或视图,如果用户需要创建临时表或视图,可通过在启动spark-beeline时带“-n omm”选项指定操作用户为omm,这样便有权限操作成功。