使用来自 abfss (azure blob) 的 InitScripts 从 ADF 链接服务创建新的数据块集群

问题描述 投票:0回答:2

最近 databricks 折旧了 DBFS init 脚本,我尝试在 ADF 中使用来自 abfss 的 InitScripts 设置 databricks 链接服务,我收到一个文件未找到的错误。

新的集群配置如下

但同样从 Databricks 尝试过它的工作,因为我们可以选择配置哪个是初始化脚本位置类型。

但是在 ADF 中,我看不到任何选项来做同样的事情,

请帮我解决这个问题。

我需要为每个管道执行创建新的数据块集群,并使用从 azure blob 存储(abfss)读取的初始化脚本。

azure-data-factory cluster-computing azure-databricks
2个回答
0
投票

如果你在

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>}}
    (它将从包含客户端秘密的秘密范围中获取密钥)

0
投票
  • 您可以使用 rest 调用根据 abfss 的要求使用 init 脚本创建集群,然后直接在 databricks notebook 中使用该集群。
  • 您可以使用 we 活动来调用
    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>
}

enter image description here

  • 在创建集群之前使用等待活动。我将等待时间设为 300 秒。

  • 最后,使用web activity返回的cluster_id为新创建的集群运行notebook

    @activity('Web1').output.cluster_id
    .

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.