如何停止引用鸡蛋文件旧版本的DataBricks笔记本?

时间:2018-09-21 11:07:46

标签: databricks egg

在Azure上的DataBricks上:

我按照以下步骤操作:

  • 使用python鸡蛋创建一个库,例如simon_1_001.egg,其中包含模块simon。

  • 将库附加到集群并重新启动集群

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

    将simon导入为s
    打印s。__file__

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

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

  • 重新启动群集,拆下并连接笔记本以运行它并 而不是抱怨它找不到模块simon,而是运行并 显示相同的字符串

类似地,如果我上传一个较新版本的鸡蛋,例如simon_1_002.egg,它仍然显示相同的字符串。 如果我等待半小时清除并重新运行几次,则最终它将获取新库并显示simon_1_002.egg。

如何正确清除旧的鸡蛋文件?

2 个答案:

答案 0 :(得分:2)

Simon,这是Databricks平台中的错误。当使用jar在Databricks中创建库时,对于Py2,文件存储在<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Assignment 02</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script> function hideParagraph() { $('#drinks_div').fadeOut(1000); $('#desserts_div').fadeOut(1000); $('#drinks_div').fadeIn(1000); $('#desserts_div').fadeIn(1000); } function hideAboutAndThings() { $('#about_me').fadeOut(1000); $('#things_I_like').fadeOut(1000); $('#about_me').fadeIn(1000); $('#things_I_like').fadeIn(1000); } function hideFirstItemDrinks() { $("li:first").hide(); } function hideFirstItemDesserts() { $("#listTwo li:first").hide(); } function hideWordsWithIce() { $("#drinks_div[li*='ice']").hide(); } </script> </head> <body> <h1> My First jQuery Page</h1> <div id="about_me"> <h2>About Me</h2> Born in the suburbs of Chicago, I've always been here my whole life. I am fascinated by the city during the night, the lights create great photographs. </div> <!--this is the end of the div for about me --> <div id="things_I_like"> <h2>Things I like </h2> I am a photographer so I enjoy taking pictures, often times when I am finished with work at my job I will go to the gym to work out and let off some steam. </div> <!--this is the end of the div for things I like --> <div id="drinks_div"> <h2> Drinks</h2> <p> <ul style="list-style-type:none" id="listOne"> <li>1. Tea</li> <li>2. Water</li> <li>3. Kombucha</li> <li>4. Iced Coffee </li> </ul> <p> </div> <!--this is the end of the div for drinks --> <div id="desserts_div"> <h2> Desserts</h2> <ul style="list-style-type:none" id="listTwo"> <li>1. Portillo's Choclate Cake</li> <li>2. Tiramisu</li> <li>3. Mint Chocolate Chip Ice Cream</li> </ul> </div> <!--this is the end of the div for desserts --> <div id="change_items"> <form action=""> <p>Fade H2s inside Food<input type="radio" name="option_item" value="Fade H2s inside Food" onclick="hideParagraph()"></p> <p>Fade the 'About Me' H2s<input type="radio" name="option_item"value="Fade the 'About Me' H2s" onclick="hideAboutAndThings()"></p> <p>Hide first item under drinks<input type="radio" name="option_item" value="Hide first item under drinks' H2s" onclick="hideFirstItemDrinks()"></p> <p>Hide first item under desserts<input type="radio" name="option_item" value="Hide first item under desserts' H2s" onclick="hideFirstItemDesserts()"></p> <p>Hide all items with the word 'Ice' in them<input type="radio" name="option_item" value="Hide all items with the word 'Ice' in them " onclick="hideWordsWithIce()"> </p> <p>Make all list items visible<input type="radio" name="option_item" value="Make all list items visible" onclick="hideParagraph()"></p> </form> </div> <!--this is the end of the div for change items --> </body> </html>dbfs:/FileStore中,对于Py3集群,存储在/databricks/python2/lib/python2.7/site-packages/中。

/databricks/python3/lib/python3.5/site-packages/jar情况下,创建库时都会存储路径。当从Trash中分离库并将其删除时,应该将其从DBFS中删除,而该副本目前尚不支持。

要解决此不一致问题,您可能需要检查Spark UI中的环境子选项卡,或在单元格中使用egg来查找适当的路径,以确保是否正确删除了库并也将其删除了。重新启动群集并附加库的较新版本之前,请使用%sh ls命令。

答案 1 :(得分:0)

在作业依赖项中还有一个有趣的Databricks平台错误。在UI中删除依赖库没有任何作用,因此即使您从dbfs中删除jar / egg,旧的依赖版本也会卡在其中,并且作业也会失败。

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

databricks jobs list

找到您的工作ID,然后:

databricks jobs get --job-id 5

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

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