Databricks - 如何在初始化脚本中访问工作区文件

rai*_*ros 5 databricks azure-databricks gcp-databricks

希望每个人都过得很好...

我们正在探索是否可以将一些 jar 组织为 Workspace 中文件夹的一部分,并将其作为 init 脚本的一部分移动。

例如,在工作区中我们有以下结构。

/Workspace/<Folder_Name1>/jars/sample_name_01.jar

初始化脚本将尝试将其移动到 DBFS/驱动程序节点文件系统中的路径。

!/bin/bash
cp /Workspace/<Folder_Name1>/jars/sample_name_01.jar /dbfs/jars/
cp /Workspace/<Folder_Name1>/jars/sample_name_01.jar /tmp/jars/
Run Code Online (Sandbox Code Playgroud)

当然,初始化脚本失败并显示错误消息

cp: cannot stat '/Workspace/<Folder_Name1>/jars/sample_name_01.jar': No such file or directory

已尝试使用包含和删除 /Workspace 的路径。我还尝试从网络终端访问该文件,并且我能够看到这些文件。

  1. 工作区文件可以通过 init 脚本访问吗?
  2. jar 和 whl/egg 文件有限制吗?
  3. 访问它们的正确语法是什么?
  4. 将 jar(只有少数)作为工作区文件或 DBFS 的一部分有意义吗?

感谢大家的帮助...干杯...

更新01:

尝试了通过其他方式收到的一些建议......

  1. 考虑到工作区中的初始化脚本是在没有引用的情况下引用的,/Workspace我也尝试过没有它们,但仍然存在同样的问题。
  2. 还尝试过列出文件并打印它们。路径本身似乎没有被识别。
  3. 也尝试过睡最多 2 分钟,给坐骑一些时间,但还是没有效果……

Jay*_*rGS 1

首先,检查您是否具有工作区和 jar 文件夹的权限。如果您仍然cp 无法工作,以下是可能的原因。

当管理员上传 jar 文件时,有两种选择。

  1. 上传jars有库。
  2. 将 jar 文件作为文件上传。

选项 1 下面是作为库上传时的操作方式。

在此输入图像描述

之后,会提示上传。

在此输入图像描述

点击创建后,结果如下。

在此输入图像描述

在这里您可以看到,它提供了在集群上安装的选项,以及您需要的Source 。

作为库上传时,dbfs默认情况下您将在以下位置获取路径中的 jar。

/dbfs/FileStore/jars/
Run Code Online (Sandbox Code Playgroud)

选项2

当它作为文件上传时。 在此输入图像描述

提示文件上传和创建。

下面是上传的jar。

在此输入图像描述

您在 jar 上使用复制命令,作为文件上传,这将起作用。

如果仍然出现相同的错误,则需要许可。因此,可能的解决方案是,您可以在创建集群后在笔记本中运行以下代码。

%sh
cp '/Workspace/Users/xxxxxxx/jars/helloworld-2.0_tmp (1).jar' /dbfs/jars/
ls /dbfs/jars/
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

注意- 如果管理员上传为库,则此操作不起作用。正如我上面提到的,它们仅在 dbfs 中可用。