问题背景:
我打算在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又特别慢。。这又是另一个问题了
作者在尝试使用DataBricks构建pipeline时遇到问题,源代码期望在运行目录创建results文件,但在DBFS找不到。问题在于DataBricks作业始终使用旧的jar包,即使上传了新版本。解决方案是删除集群库中的旧jar包以确保使用最新版本。此外,uninstall过程的缓慢也成了一项挑战。
759

被折叠的 条评论
为什么被折叠?



