亲爱的社区!在我描述问题之前,这里是对正在使用的软件的简短描述(其中后两个在三个节点的小集群中运行,每个节点使用 Ubuntu 14.04 ):
情况如下:为了在Zeppelin笔记中编写的Spark Streaming应用程序中使用 TwitterUtils 类,我需要包含 org.apache.spark.streaming.twitter来自Maven的<。strong ( org.apache.bahir:spark-streaming-twitter_2.11:2.0.0-preview )。到目前为止我学到的是在Zeppelin中有几个选项可以使外部依赖项可用:
在尝试了上述所有内容之后 - 几乎是任意组合及其变体 - 问题是我仍然无法从Zeppelin笔记中导入 TwitterUtils 类:< / p>
Class import failing in Zeppelin note.
从图中可以看出, sc.listJars()的输出显示实际包含了.jar文件。但是,类导入失败。
我的第一个想法是问题出现是因为Spark在纱线客户端模式下运行,所以我也在纱线客户端模式下启动了Spark shell,并尝试从那里导入 TwitterUtils 类 - 哪个有效:
Class import working from Spark shell.
为了了解发生了什么,我搜索了Zeppelin,Spark和YARN的日志文件,但是找不到任何错误消息指出问题的原因。
长话短说:虽然jar文件包含在Zeppelin中(由 sc.listJars()证明)虽然类导入可以从spark-shell中运行在纱线客户端模式下,我无法从我的Zeppelin笔记中获取导入功能。
长篇故事更短:我非常感谢您对如何解决此问题的想法!
提前感谢您的时间和精力。
PS:我很抱歉我无法直接将图像上传到这个帖子 - 它说我需要至少10个声望点,我没有,因为这是我在这里的第一个帖子答案 0 :(得分:0)
@eliasah提出的解释器选项卡中添加依赖项实际上就是这样做的 - 非常感谢!
对于可能遇到同样问题的那些人,我将很快描述解决方案,并添加一张如何实际调用 sc.listJars()的图片看起来像(与原始问题中的图片相比)。
前往Zeppelin的翻译选项卡并向下滚动或搜索 spark 解释程序,然后点击编辑。在可用设置的最底部,有一个依赖关系部分。在这里添加您的依赖项(通过指定Maven坐标,例如,在我的情况下 org.apache.bahir:spark-streaming-twitter_2.11:2.0.0-preview )并保存设置。重新启动解释器后,依赖项应该可用。
以下是执行上述步骤后对 sc.listJars()的调用看起来像我的情况:
如果将此图片与原始问题中的第一张图片进行比较,您会发现该列表现在包含更多条目。但是,我仍然想知道,当只有包含它的.jar文件存在时,为什么类导入不起作用。无论如何,问题解决了@eliasah - 再次感谢,你值得一个cookie! - 我希望这个简短的描述也能帮助其他人。