使用dbx 0.7.4部署作业时报TypeError: submit_run()不支持permissions参数
问题原因及解决方法
错误原因
你执行dbx launch <my-workflow> --from-assets时,触发的是Databricks Jobs API的submit_run接口,这个接口不支持permissions参数。但你的配置里把permissions放在了basic-settings中,通过YAML合并传递给了单次运行的请求,导致接口报错。
permissions是针对**持久化工作流(定期作业)**的配置项,仅在创建/部署持久化工作流时生效,不适用于临时的单次运行。
解决方案
方案1:拆分权限配置(适配持久化工作流+单次运行)
将permissions从basic-settings中移出,放到workflow的顶层配置里,这样仅在部署持久化工作流时生效,不影响单次运行:
custom: basic-cluster-props: &basic-cluster-props spark_version: "10.4.x-scala2.12" node_type_id: "Standard_D3_v2" basic-settings: &basic-settings libraries: - pypi: package: "pyyaml" basic-static-cluster: &basic-static-cluster new_cluster: <<: *basic-cluster-props num_workers: 1 <<: *basic-settings environments: default: strict_path_adjustment_policy: true workflows: - name: "current-integration-test" <<: - *basic-static-cluster # 权限配置移至workflow顶层,仅部署持久化工作流时生效 permissions: access_control_list: - user_name: "userid" permission_level: "IS_OWNER" - group_name: "admins" permission_level: "CAN_MANAGE" - group_name: "rolename" permission_level: "CAN_MANAGE" spark_python_task: python_file: "file://tests/integration/cp/silver/test_myjob_job.py" parameters: ["--conf-file", "file:fuse://conf/int/cp.yml","--cov=dlite"]
方案2:移除权限配置(仅用于单次测试运行)
如果只是临时运行测试,不需要设置工作流权限,直接删除basic-settings中的permissions段即可:
custom: basic-cluster-props: &basic-cluster-props spark_version: "10.4.x-scala2.12" node_type_id: "Standard_D3_v2" basic-settings: &basic-settings libraries: - pypi: package: "pyyaml" basic-static-cluster: &basic-static-cluster new_cluster: <<: *basic-cluster-props num_workers: 1 <<: *basic-settings environments: default: strict_path_adjustment_policy: true workflows: - name: "current-integration-test" <<: - *basic-static-cluster spark_python_task: python_file: "file://tests/integration/cp/silver/test_myjob_job.py" parameters: ["--conf-file", "file:fuse://conf/int/cp.yml","--cov=dlite"]
补充说明
dbx deploy <my-workflow> --assets-only+dbx launch --from-assets是用于临时运行代码的模式,不会在Databricks上创建持久化的工作流,因此权限配置在此场景下无效。- 如果需要创建带权限的持久化工作流,使用常规的
dbx deploy <my-workflow>(不带--assets-only)即可,此时权限配置会生效。
内容的提问来源于stack exchange,提问作者jalazbe
相关产品推荐
相关产品推荐

