在Ubuntu14.04上以yarn客户端模式加载spark上zeppelin的外部依赖项

xkftehaa  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(340)

亲爱的社区!在我描述这个问题之前,下面是对正在使用的软件的简短描述(后两个运行在一个由三个节点组成的小集群中,每个节点都使用ubuntu14.04):
齐柏林飞艇0.6.1
spark 2.0.0和scala 2.11.8
hadoop 2.7.3版
情况如下:为了在zeppelin笔记中编写的spark流应用程序中使用twitterutils类,我需要包含来自maven(org.apache)的org.apache.spark.streaming.twitter。bahir:spark-streaming-twitter_2.11:2.0.0-预览)。到目前为止,我学到的是,在齐柏林飞艇中提供外部依赖项有两种选择:
导出conf/zeppelin-env.sh中的spark\u submit\u options变量并设置--jars(在我的例子中是--jars)hdfs://admdsmaster:54310/global/jars/spark-streaming-twitter_2.11-2.0.0-preview.jar(还测试了指向本地文件系统的路径)。
导出spark\u submit\u选项并设置--packages(在我的例子中是--packages org.apache)。bahir:spark-streaming-twitter_2.11:2.0.0-预览)。
使用上述值在conf/spark-defaults.conf中设置spark.jars或spark.jars.packages。
在齐柏林飞艇中使用%dep解释器,就像这样:z.load(“org.apache。bahir:spark-streaming-twitter_2.11:2.0.0-预览“)。不过,这是不赞成的。
在zeppelin笔记中使用sc.addjar()手动添加一个.jar文件。
在尝试了以上所有方法——以及几乎任意的组合和变化——之后,问题是我仍然无法从齐柏林飞艇笔记中导入twitterutils类:
类导入在齐柏林飞艇笔记中失败。
从图中还可以看到sc.listjars()的输出,它显示了.jar文件实际上包含在其中。但是,类导入失败。
我的第一个想法是,问题的出现是因为spark是在yarn客户机模式下运行的,所以我也在yarn客户机模式下启动了spark shell,并尝试从此处导入twitterutils类--这起到了作用:
类从spark shell导入工作。
为了找出发生了什么,我搜索了齐柏林飞艇、spark和yarn的日志文件,但找不到任何错误消息来指出问题的原因。
长话短说:尽管jar文件包含在zeppelin中(如sc.listjars()所证明的),尽管类导入在yarn客户机模式下从spark shell工作,但我无法从zeppelin note中获得导入。
长话短说:我真的很感激你关于如何解决这个问题的想法!
提前感谢您的时间和努力。
p、 s:很抱歉,我不能直接把图片上传到这个帖子上,上面说我至少需要10个我没有的信誉点,因为这是我第一次在这里发帖子。

o4tp2gmn

o4tp2gmn1#

按照@eliasah的建议,从解释器选项卡添加依赖项实际上做到了——非常感谢!
对于那些可能遇到同样问题的人,我将非常简短地描述解决方案,并添加一张图片,说明调用sc.listjars()实际上应该是什么样子(与原始问题中的图片相比)。
前往齐柏林飞艇的解释器选项卡,向下滚动或搜索spark解释器,然后点击编辑。在可用设置的最底部有一个dependencies部分。在这里添加依赖项(例如,在我的例子org.apache中,通过指定maven坐标)。bahir:spark-streaming-twitter_2.11:2.0.0-预览)并保存设置。重新启动解释器后,依赖项应该可用。
在我的例子中,在执行了上述步骤之后,对sc.listjars()的调用是这样的:

如果你将这张图片与原来问题中的第一张图片进行比较,你会注意到这个列表现在包含了更多的条目。不过,我仍然在想,为什么只有包含类的.jar文件存在时类导入不起作用。不管怎样,多亏了@eliasah,问题解决了——再次感谢,你应该得到一块饼干我希望这个简短的描述也能帮助其他人。

相关问题