DataBricks jar包写的相对路径文件找不到

作者在尝试使用DataBricks构建pipeline时遇到问题,源代码期望在运行目录创建results文件,但在DBFS找不到。问题在于DataBricks作业始终使用旧的jar包,即使上传了新版本。解决方案是删除集群库中的旧jar包以确保使用最新版本。此外,uninstall过程的缓慢也成了一项挑战。

问题背景:

我打算在DataBricks上用一个开源项目(GitHub - qiang2100/STTM: Short Text Topic Modeling, JAVA)来build pipeline,但是它写的数据找不到。

因为它源代码的逻辑是在运行目录创建一个results文件夹,再把所有的以expectedName命名的results文件写到里面(folderPath+expName+suffix),但是谁知道DataBricks运行jobs的目录在DBFS哪里。。除非改源代码让它print出来

我尝试重新打包jar包上传,但是jobs总是用的之前的jar包。写到这里我突然想到或许可以尝试每次新建新的job来上传新的jar包,但懒得再尝试了,这个结论也是我尝试了多次打包上传才发现的。

anyway,我突然灵机一动,既然jar包内部是一个black box我动不了,那我可以在参数上做文章啊。

让它输出到我想要的路径不就行了!

于是有了:

 成功输出结果文件:

 我可真是一个大天才!!

后续:

后来我发现这个问题的根本是在tasks里上传的任何jar包,它都会安装上,当你指定相同的Main class的时候它并不会去找最新安装的那个,一直都去找最旧的那个版本。

所以根本的解决办法是,如果需要在databricks更新有同样main class类的jar包,需要确保cluster的libraries里有把老的jar包给uninstall掉。(而它uninstall又特别慢。。这又是另一个问题了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值