我怎样才能阻止DataBricks笔记本引用我的egg文件的旧版本?

我怎样才能阻止DataBricks笔记本引用我的egg文件的旧版本?,databricks,egg,Databricks,Egg,在Azure上的Databrick上: 我遵循以下步骤: 从PythonEgg创建一个库,比如simon_1_001.egg,它包含一个模块simon 将库连接到群集并重新启动群集 将笔记本电脑连接到群集并运行: 将simon作为s导入 打印文件 运行笔记本,它会正确地给我一个文件名,包括 字符串“simon_1_001.egg” 然后分离并删除egg文件,甚至清空垃圾 重新启动群集,分离并连接笔记本电脑,然后运行它 它没有抱怨找不到simon模块,而是运行 显示相同的字符串 同样,如果我上

在Azure上的Databrick上:

我遵循以下步骤:

  • 从PythonEgg创建一个库,比如simon_1_001.egg,它包含一个模块simon

  • 将库连接到群集并重新启动群集

  • 将笔记本电脑连接到群集并运行:

    将simon作为s导入
    打印文件

  • 运行笔记本,它会正确地给我一个文件名,包括 字符串“simon_1_001.egg”

  • 然后分离并删除egg文件,甚至清空垃圾

  • 重新启动群集,分离并连接笔记本电脑,然后运行它 它没有抱怨找不到simon模块,而是运行 显示相同的字符串

同样,如果我上传一个更新版本的egg,比如simon_1_002.egg,它仍然显示相同的字符串。 如果我等待半个小时,然后重新运行几次,那么最终它将获取新库并显示simon_1_002.egg


如何正确清除旧的egg文件?

Simon,这是Databricks平台中的一个bug。使用jar在Databricks中创建库时,该文件存储在Py2的
dbfs:/FileStore
/Databricks/python2/lib/python2.7/site packages/
中,而Py3集群的
/Databricks/python3/lib/python3.5/site packages/

jar
egg
两种情况下,创建库时都会存储路径。当一个库被分离并从垃圾箱中删除时,它应该从DBFS中删除副本,而目前它没有这样做


为了解决这一矛盾问题,您可能希望检查Spark UI中的environment子选项卡,或在单元格中使用
%sh ls
查找适当的路径,以确保库是否正确删除,并在重新启动群集和附加库的较新版本之前,使用
%sh rm
命令删除它们。

,这是Databricks平台中的一个bug。使用jar在Databricks中创建库时,该文件存储在Py2的
dbfs:/FileStore
/Databricks/python2/lib/python2.7/site packages/
中,而Py3集群的
/Databricks/python3/lib/python3.5/site packages/

jar
egg
两种情况下,创建库时都会存储路径。当一个库被分离并从垃圾箱中删除时,它应该从DBFS中删除副本,而目前它没有这样做


为了解决这一矛盾问题,您可能希望检查Spark UI中的environment子选项卡,或在单元格中使用
%sh ls
查找适当的路径,以确保库是否正确删除,并在重新启动群集和附加库的较新版本之前,使用
%sh rm
命令删除它们。

还有另一个乐趣作业依赖关系中的Databricks平台错误。删除UI中的依赖库没有任何作用,所以旧的依赖版本会被卡住,即使从dbfs中删除jar/egg,作业也会失败

唯一的选择似乎是使用或更新作业。因此,您需要按照以下思路进行操作(CLI):

找到您的工作id,然后:

databricks jobs get --job-id 5
将输出保存到json文件
job.json
,删除
settings
之外的内容,将
settings
中的内容复制到json文档的根目录,删除不需要的库,然后执行以下操作:

 databricks jobs reset --job-id 5 --json-file job.json 

在作业依赖项中还有另一个有趣的Databricks平台错误。删除UI中的依赖库没有任何作用,所以旧的依赖版本会被卡住,即使从dbfs中删除jar/egg,作业也会失败

唯一的选择似乎是使用或更新作业。因此,您需要按照以下思路进行操作(CLI):

找到您的工作id,然后:

databricks jobs get --job-id 5
将输出保存到json文件
job.json
,删除
settings
之外的内容,将
settings
中的内容复制到json文档的根目录,删除不需要的库,然后执行以下操作:

 databricks jobs reset --job-id 5 --json-file job.json