Git clone to a Databricks Unity Catalog enabled Volume

xjreopfe  于 2023-11-15  发布在  Git
关注(0)|答案(1)|浏览(98)

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

  • DBR 13.3 LTS
  • 模式:共享(启用UC)

所以之前,在我的非UC启用集群中,我会在notebook中有一个像下面这样的单元格,以git克隆我的repo到DBFS tmp位置:

!git clone https://[email protected]/repo_path /tmp/repo

字符串
但是现在,由于我启用了UC集群,我想在卷内克隆repo,这样我就可以删除notebook开头的repo目录(dbutils.fs.rm("/Volumes/catalogname/schemaname/volumename/tmp/repo", True)可以工作),如下所示:

!git clone https://[email protected]/repo_path /Volumes/catalogname/schemaname/volumename/tmp/repo


但似乎在克隆时卡在Resolving deltas步骤中。
有没有人遇到过这个问题,并且找到了解决方案?我在想,也许git clone现在必须以不同的方式完成,或者我的最后一个选择是在init脚本中包含git clone命令,并使启用UC的集群在启动时运行它。

14ifxucb

14ifxucb1#

找到了一个解决最初发布的问题的解决方法。我已经运行了一个修改的CI/CD Azure devops管道,在我的情况下,它运行在我需要克隆的同一个存储库上,但也可以克隆外部存储库。
首先,我在构建阶段包含了一个新任务,将仓库复制到一个目录中,因此该任务将目录发布到工件中:

- script: | # Copy git repo to tmp repo directory
    mkdir -p $(Build.ArtifactStagingDirectory)/repo
    find $(Build.SourcesDirectory) -mindepth 1 -maxdepth 1 -exec cp -r {} $(Build.ArtifactStagingDirectory)/repo \;
  displayName: Copy repo         
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'my-artifact'
  displayName: Publish Artifact

字符串
然后,第二部分是在部署阶段(您也需要下载工件步骤),我包含了一个AzureFileCopy@5任务,该任务将该目录(又名. my repository)复制到我的ADLS(Azure Data Lake Storage)位置,该位置与我的Databrick的UC卷可以访问的位置相同,因此我可以在UC卷中看到我的存储库,如下所示:

- task: DownloadBuildArtifacts@1
  inputs:  
    artifactName: my-artifact
    downloadPath: '$(System.ArtifactsDirectory)' 
    displayName: Download Build Artifact
- task: AzureFileCopy@5
  displayName: Copy repo to storage account
  inputs:
    SourcePath: $(System.ArtifactsDirectory)/my-artifact/repo
    azureSubscription: YourAzureSubscriptionName
    Destination: AzureBlob
    storage: YourADLSName
    ContainerName: YourADLSContainerName
    BlobPrefix: YourUCVolumeName/tmp
    AdditionalArgumentsForBlobCopy: |
      --recursive=true `
      --overwrite=true

相关问题