- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试部署使用 MultiLang Bolt(用 Python 编写)的拓扑:
builder.setBolt("avro-parser", new AvroBolt(), 3).shuffleGrouping("main-kafka-spout");
builder.setBolt("nlp-analyzer", new NLPBolt("/python/analyzer/audio_parser.py"), 2).shuffleGrouping("avro-parser");
我可以毫无问题地提交拓扑,但检查日志文件时我看到此错误:
java.lang.RuntimeException: Error when launching multilang subprocess
at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:89) ~[storm-core-1.0.1.jar:1.0.1]
at org.apache.storm.task.ShellBolt.prepare(ShellBolt.java:131) ~[storm-core-1.0.1.jar:1.0.1]
at org.apache.storm.daemon.executor$fn__7953$fn__7966.invoke(executor.clj:792) ~[storm-core-1.0.1.jar:1.0.1]
at org.apache.storm.util$async_loop$fn__625.invoke(util.clj:482) [storm-core-1.0.1.jar:1.0.1]
at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_91]
Caused by: java.io.IOException: Cannot run program "/usr/bin/python" (in directory "/var/lib/storm/supervisor/stormdist/sintonea-topology-main-22-1472285031/resources"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(Unknown Source) ~[?:1.8.0_91]
at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:82) ~[storm-core-1.0.1.jar:1.0.1]
... 5 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method) ~[?:1.8.0_91]
at java.lang.UNIXProcess.<init>(Unknown Source) ~[?:1.8.0_91]
at java.lang.ProcessImpl.start(Unknown Source) ~[?:1.8.0_91]
at java.lang.ProcessBuilder.start(Unknown Source) ~[?:1.8.0_91]
at org.apache.storm.utils.ShellProcess
当然,我注意到指定的日志跟踪中没有“资源”文件夹:
/var/lib/storm/supervisor/stormdist/sintonea-topology-main-22-1472285031/resources
如果您在该目录中执行“ls”命令,您将看到它:
stormcode.ser stormconf.ser stormjar.jar
为什么storm没有在该目录中创建资源文件夹?
我在 src/main/resources 中有两个资源文件夹:
这些文件夹被复制到 JAR 的根目录中,而不是/resources 文件夹中。
这怎么可能?我有一个 AvroBolt,它以这种方式使用模式,并且没有给出任何问题(使用 DummyBolt 而不是 MultiLang Bolt 进行测试):
_schema = parser.parse(getClass().getResourceAsStream("/schema/caller_request.avsc"));
编辑
我已将资源文件夹移至
baseDirectory.value / "multilang"
读完本文后:
http://storm.apache.org/releases/current/Creating-a-new-Storm-project.html
现在资源文件夹已创建并复制,但我仍然遇到同样的问题:
Serializer Exception:
/usr/bin/python: can't open file '/resources/python/analyzer/audio_parser.py': [Errno 2] No such file or directory
编辑2
我找到了一个解决方法(在不同级别创建两个资源文件夹):
并将其添加到我的 build.sbt 中:
unmanagedResourceDirectories in Compile += { baseDirectory.value / "multilang" }
unmanagedClasspath in Compile += baseDirectory.value / "multilang"
并将我的 ShellBot 设置为(忽略路径中的“资源”或“/”一词):
NLPBolt nlpBolt = new NLPBolt("python/analyzer/audio_parser.py");
还有:
_schema = parser.parse(getClass().getResourceAsStream("/schema/caller_request.avsc"));
它似乎有效,但我不喜欢这个解决方案。有什么想法吗?
编辑3
顺便说一句,这段代码:
import storm
#from nltk.stem.snowball import SnowballStemmer
from es_tagger import SpanishTagger
config = utils.load_json('python/analyzer/data/config.json')
class AudioParserBolt(storm.BasicBolt):
产生以下错误:
Serializer Exception:
Traceback (most recent call last):
File "python/analyzer/audio_parser.py", line 27, in <module>
class AudioParserBolt(storm.BasicBolt):
AttributeError: 'module' object has no attribute 'BasicBolt'
最佳答案
所以,这基本上就是我让它工作的方法:
unmanagedResourceDirectories in Compile += { baseDirectory.value / "multilang" } unmanagedClasspath in Compile += baseDirectory.value / "multilang"
config.put(Config.TOPOLOGY_SUBPROCESS_TIMEOUT_SECS, );
任何时候你需要在Python代码中使用外部文件,比如配置文件,就这样调用它(父目录将是我们之前创建的multilang/resources):
config = utils.load_json('python/analyzer/data/config.json')
关于java - Storm 部署 JAR 拓扑时缺少资源文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39180503/
我正在尝试在 map 上绘制一些疾病事件数据的位置。 我用它来导入数据: ByTown% addProviderTiles("CartoDB.Positron")%>% addPolygons
我有一个文件调用 find.js,我使用 node find.js 运行,我的节点是版本 10 我不知道为什么我无法使用 async await。 const axios = require("axi
我有一个项目作为引用添加到 System.Web。 但是,它似乎无法获取 HttpContext。这样做: Imports System.Web _ApplicationBase = HttpCont
在互联网上找到这段代码,出于某种原因它缺少 while 循环逻辑“while(i....)”,虽然我找到了 PigLatin* 问题的其他可行解决方案,但我真的很想了解这个正在工作。 *PigLati
我工作了一整天来运行 Xampp 并在其上安装 TYPO3。现在我登录到后端,但没有显示许多管理模块,例如模板、访问等。 - 一定是我做错了什么,但我不知道。 these are the module
你好 我有编译这个问题 \begin{equation} J = \sum_{j=1}^{C} \end{equation} 我不断收到错误 missing $ inserted 这很奇怪,因
我正在尝试使用 SQLite CLI,但无法获得 generate_series功能来工作。我可以按照文档中的建议使用递归 CTE 对其进行模拟,但我似乎无法获得该链接中的任何示例。这是我的 sess
我目前正在开发我想要的软件,而软件正在安装,它可以在后台为软件创建 native 图像。 我正在考虑使用 NGEN 并将进程优先级设置为低,因为我不希望它消耗 100% CPU。但是我发现我的计算机上
我想使用 Xcodes Instruments 进行 UI 自动化测试。但似乎缺少“自动化”。我怎样才能添加这个? 最佳答案 如果您想使用自动化仪器,请使用 Xcode 7.3。 Apple 在 Xc
我目前在 JS 开发中迈出了一小步,并编写了以下链接添加器: const button = document.getElementById('button') const listdiv = docu
此代码有什么问题: NSError *error = nil; [SFHFKeychainUtils deleteItemForUsername:@"IAPNoob01" andServiceName
出于某种原因,在安装和配置(我认为)一切之后,com.adobe.utils.AGALMiniAssembler 不见了,其他一切正常。 我认为我已尽一切努力让孵化器正常工作,但显然我错过了一步。 如
我有一个名为 new 的方法。调用 new 时,我传递了一个参数,但是当我运行应用程序时,出现没有参数或参数为空的错误。 StepReader.pm package StepReader; use s
安装 gtk 1.2(包名 gtk1)和 macports chokes 在最终的 make 中,在 libintl.h 的第 440 行。 extern locale_t libintl_newlo
我用按钮创建表格。 这是javascript代码: function layersListTable(layers) { var content =''; $.each($(layer
我在使用此 javascript 时遇到此错误,任何人都可以帮我弄清楚我做错了什么吗? $(this).prepend('Check availability »'); 它给我错误 mis
我有一个独立的工具链 NDK13b、api19、llvm 3.8 编译器、arm 32 位、带有 libcpp(llvm C++ 库) 我想避免依赖 libgcc,所以我构建了 compiler-rt
我按照一些教程使用 phonegap 的条形码扫描器插件。但是当我从现有源创建一个新的 android 项目来创建条码库时 (step 6 in this page)我收到错误:“AndroidMan
我现在尝试在 Eclipse 中打开我的布局 xml 文件。我只得到错误 No XML content. Please add a root view or layout to your docume
我的 android-sdk-windows\tools 目录中缺少层次结构查看器工具。 工具链接: http://developer.android.com/guide/developing/too
我是一名优秀的程序员,十分优秀!