Java 使用Python运行Storm MultiLang时出错
我正在学习Udacity的Apache Storm课程。使用的storm版本为0.9.3 其中一个练习是运行包含用Python编写的螺栓的拓扑。以下简要介绍了所遵循的步骤。在本练习中,我的源目录是Java 使用Python运行Storm MultiLang时出错,java,python,apache-storm,Java,Python,Apache Storm,我正在学习Udacity的Apache Storm课程。使用的storm版本为0.9.3 其中一个练习是运行包含用Python编写的螺栓的拓扑。以下简要介绍了所遵循的步骤。在本练习中,我的源目录是src,包是udacity.storm 在udacity/storm下创建名为resources/的目录。在那里放置两个python脚本-splitsense.py和storm.py 在包udacity.storm下创建一个boltsplitsequenceSplitSessionbolt派生自Shel
src
,包是udacity.storm
udacity/storm
下创建名为resources/
的目录。在那里放置两个python脚本-splitsense.py
和storm.py
udacity.storm
下创建一个boltsplitsequence
SplitSession
bolt派生自ShellBolt
,并实现IRichBolt
接口resources/
目录打包到JAR文件中storm jar target/mytopology.jar udacity.storm.mytopology
将拓扑提交给stormlib/
目录,就会发生这种情况。在放入一些调试语句后,我确定python脚本从以下位置运行:
/tmp/06380be9-d413-4ae5-b387-fafe3acf3e65/supervisor/stormdist/tweet-word-count-1-1449502750
我导航到此目录,发现lib/
文件夹不存在
该页面没有提供太多有助于初学者调试所面临问题的信息
非常感谢您为解决此问题提供的任何帮助。因为错误表明您尝试在源代码中运行。只需下载二进制版本并按照安装说明进行操作 之后,您可以准备
jar
文件,并通过bin/storm jar yourJarFile.jar提交到集群(请参阅)
无需手动下载源代码(只要您不想使用Storm本身)。只需将二进制版本中相应的jar文件包含到项目中即可。如果使用maven(并且仅在本地模式下运行),只需包含相应的maven依赖项(请参阅);在这种情况下,不需要手动下载二进制版本。经过大量的查找,我发现了这个问题。事实上,问题不在说明中,而是因为我在参考资料目录中包含的storm.py
文件的版本较旧或不正确-我通过谷歌搜索获得了URL,结果可能不正确
要下载的storm.py
来自Github链接。我现在能够成功地进行练习了
谢谢大家的帮助。我将确保我在Udacity论坛上发布此信息,以便人们了解混乱情况。如果其他人遇到此问题:
我也有同样的问题。但是,我无法通过将storm.py从二进制版本复制到我的资源目录来解决这个问题
我的初始错误是“AttributeError:“module”对象没有属性“BasicBolt”
您可以将正确的Maven依赖项添加到pom.xml中,这将把正确的依赖项复制到您的JAR中。添加工件“multilang python”,groupId“org.apache.storm”,版本与您的storm版本匹配,然后运行clean和package目标生成更新的JAR文件。Udacity论坛上是否有人以前遇到过此问题?@morganw09dev感谢您的帮助。我已经在下面发布了我的发现,详细说明了错误的原因。谢谢你的帮助。但我在下面的回答中贴出了错误的原因。