【问题标题】:Mounting Azure Blob Storage to Azure Databricks without using cluster在不使用群集的情况下将 Azure Blob 存储装载到 Azure Databricks
【发布时间】:2020-08-14 07:36:21
【问题描述】:

我们有一个要求,即在 Azure DevOps 中通过 CI/CD 管道预配 Databricks 服务时,我们应该能够在不连接到集群的情况下将 blob 存储装载到 DBFS。是否可以使用 Azure DevOps 中的 bash 脚本将对象存储挂载到 DBFS 集群?

我浏览了各种论坛,但他们都提到了使用 dbutils.fs.mount 执行此操作,但问题是我们无法在 Azure DevOps CI/CD 管道中运行此命令。

将不胜感激这方面的任何帮助。

谢谢

【问题讨论】:

    标签: azure-devops azure-databricks


    【解决方案1】:

    您的要求是可能的,但需要一些额外的工作。在我们的组织中,我们尝试了各种方法,并且我使用 Databricks 已经有一段时间了。最适合我们的解决方案是编写一个 bash 脚本,在 Azure Devops 管道中使用 databricks-cli。我们的方法如下:

    1. 使用令牌 API 检索 Databricks 令牌
    2. 在 CI/CD 管道中配置 Databricks CLI
    3. 使用 Databricks CLI 上传装载脚本
    4. 使用 Jobs API 创建 Databricks 作业并将挂载脚本设置为要执行的文件

    上述步骤都包含在一个 bash 脚本中,该脚本是我们 Azure Devops 管道的一部分。

    设置 CLI
    现在无需任何手动步骤即可设置 Databricks CLI,因为您可以使用令牌 API 生成临时访问令牌。我们使用服务主体进行身份验证。

    https://docs.microsoft.com/en-US/azure/databricks/dev-tools/api/latest/tokens

    创建挂载脚本
    我们有一个遵循安装说明的 scala 脚本。这也可以是 Python。有关详细信息,请参阅以下链接:

    https://docs.databricks.com/data/data-sources/azure/azure-datalake-gen2.html#mount-azure-data-lake-storage-gen2-filesystem.

    上传挂载脚本
    在 Azure Devops 管道中,databricks-cli 是通过使用令牌 API 创建临时令牌来配置的。完成此步骤后,我们可以使用 CLI 将我们的挂载脚本上传到 DBFS 或使用 Workspace API 将其作为笔记本导入。

    https://docs.microsoft.com/en-US/azure/databricks/dev-tools/api/latest/workspace#--import

    配置实际装载存储的作业
    我们有一个 JSON 文件,它定义了执行“挂载存储”脚本的作业。您可以定义一个作业以使用您在上一步中上传的脚本/笔记本。您可以使用 JSON 轻松定义作业,请在 Jobs API 文档中查看它是如何完成的:

    https://docs.microsoft.com/en-US/azure/databricks/dev-tools/api/latest/jobs#--

    此时,触发作业应该会创建一个临时集群来为您安装存储。您不需要使用 Web 界面或执行任何手动步骤。

    您可以像我们一样将这种方法应用于不同的环境和资源组。为此,我们使用 Jinja 模板来填写环境或项目特定的变量。

    我希望这对您有所帮助。如果您有任何问题,请告诉我!

    【讨论】:

    • 您好 J.Offenberg,感谢您分享此信息。这里的问题是,在通过 ARM 模板配置 Databricks 工作区后,我们将没有任何令牌用于连接到 Databricks 工作区,那么令牌将如何生成或 bash 脚本将如何授权通过令牌 api 生成令牌?
    • 另外,如果你能分享一个通过这个工作运行一个简单的 python 脚本的例子,无论是使用 spark-submit 还是 JAR 选项,都会很有帮助。
    • 我们的 Databricks 环境也是通过 ARM 提供的。我们使用服务主体来请求访问令牌。此链接向您展示如何使用服务主体获取令牌。还有一个请求的 Bash 示例。让我知道这是否有帮助。 docs.microsoft.com/en-us/azure/databricks/dev-tools/api/latest/…
    • @NGupta 能解决您的问题吗?如果对你有帮助,你能接受答案吗?
    • 感谢分享意见,这对我们帮助很大。只是一个快速的输入——我们可以在集群中使用一个初始化脚本来检查挂载点是否可用,如果没有,那么可以创建挂载点吗?您对此有何看法?
    猜你喜欢
    • 1970-01-01
    • 2019-06-09
    • 2019-03-16
    • 2021-06-02
    • 2021-07-11
    • 1970-01-01
    • 2019-08-06
    • 2012-12-08
    • 2020-11-15
    相关资源
    最近更新 更多