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