最近 databricks 折旧了 DBFS init 脚本,我尝试在 ADF 中使用来自 abfss 的 InitScripts 设置 databricks 链接服务,我收到一个文件未找到的错误。
新的集群配置如下
但同样从 Databricks 尝试过它的工作,因为我们可以选择配置哪个是初始化脚本位置类型。
但是在 ADF 中,我看不到任何选项来做同样的事情,
请帮我解决这个问题。
我需要为每个管道执行创建新的数据块集群,并使用从 azure blob 存储(abfss)读取的初始化脚本。
如果你在
abfss://...
上指定了init脚本,那么你需要在“Cluster Spark conf”部分指定相应的spark.hadoop.fs...
配置(用相应的值填写<...>
中的数据):
spark.hadoop.fs.azure.account.auth.type
设置为 OAuth
spark.hadoop.fs.azure.account.oauth.provider.type
设置为 org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.endpoint
设置为 https://login.microsoftonline.com/<tenant_id>/oauth2/token
spark.hadoop.fs.azure.account.oauth2.client.id
设置为 <client_id>
spark.hadoop.fs.azure.account.oauth2.client.secret
设置为 {{secrets/<secret-scope>/<secret-key-name>}}
(它将从包含客户端秘密的秘密范围中获取密钥)Clusters 2.0
REST API 来创建一个集群,如 this document 中指定的那样,带有您指定承载令牌(访问令牌)的身份验证标头。以下是您可以使用的正文(您可能还需要添加集群配置):{
"num_workers": null,
"autoscale": {
"min_workers": 2,
"max_workers": 8
},
"cluster_name": "cluster1",
"spark_version": "7.3.x-scala2.12",
"spark_conf": {},
"node_type_id": "Standard_D3_v2",
"custom_tags": {},
"spark_env_vars": {
"PYSPARK_PYTHON": "/databricks/python3/bin/python3"
},
"autotermination_minutes": 120,
"init_scripts": <script_path_here_as_specified_in_document>
}
在创建集群之前使用等待活动。我将等待时间设为 300 秒。
最后,使用web activity返回的cluster_id为新创建的集群运行notebook
@activity('Web1').output.cluster_id
.