Apache Spark 给予Databricks Unity Catalog启用的群集用户root权限

ztigrdn8  于 2023-11-22  发布在  Apache
关注(0)|答案(1)|浏览(177)

我正在将Azure Databricks工作区中的当前配置单元元存储区表迁移到Unity Catalog(UC),遇到了与新用户权限相关的问题。
所以我的集群设置将是这样的:

  • DBR 13.3 LTS
  • 模式:共享(启用UC)
  • 群集配置有一个init_script,它运行apt-get和其他命令以安装ODBC驱动程序

注意到如果我跑步:%sh whoami在非UC集群中,我会得到root作为响应,这很好,因为init_script将运行apt-get和命令来安装ODBC驱动程序,但现在我在启用UC的集群中运行相同的%sh whoami,我会得到类似于spark-XXXX-footer-XXXX-footer-XXXX-af的响应。
然后运行%sh id spark-XXXXXXXX-XXXX-XXXX-XXXX-af,得到如下结果:
uid=1119(spark-XXXXXXXX-XXXX-XXXX-XXXX-af) gid=1119(spark-XXXXXXXX-XXXX-XXXX-XXXX-af) groups=1119(spark-XXXXXXXX-XXXX-XXXX-XXXX-af)
对于未启用UC的群集,我会得到如下内容:
uid=0(root) gid=0(root) groups=0(root)
我试着运行命令如下:
%sh usermod -u 0 spark-XXXXXXXX-XXXX-XXXX-XXXX-af

%sh visudo spark-XXXXXXXX-XXXX-XXXX-XXXX-af ALL=(ALL) NOPASSWD: ALL
查看我是否可以在非UC群集中授予用户spark-XXXXXXXX-XXXX-XXXX-XXXX-af与之前的root相同的权限,但我没有成功。
有没有人遇到过这个问题,并得到了解决方案?通过向启用UC的用户授予root权限或在启用UC的集群中安装ODBC的任何方法。

qq24tv8q

qq24tv8q1#

当您在共享UC群集上运行%sh whoami命令时,它是在隔离环境中执行的,这是保护用户相互隔离所必需的,因此visudo等命令都不会有帮助。
但是init脚本仍然作为root执行-您可以通过创建一个简单的init脚本来检查这一点,内容如下:

#!/bin/bash

whoami

字符串
如果你启用了集群日志,那么你应该在标准输出的文件中看到它有root

相关问题