首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >风暴-R积分

风暴-R积分
EN

Stack Overflow用户
提问于 2016-03-05 15:04:21
回答 1查看 520关注 0票数 1

我正在尝试将我的R脚本与Storm集成起来。我的Rbolt的代码是:

代码语言:javascript
复制
public class RBolt  extends ShellBolt implements IRichBolt {
public RBolt() {
    super("Rscript", "storm_OR.R");
}
@Override
public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {
    outputFieldsDeclarer.declare(new Fields("OR"));
}

@Override
public Map<String, Object> getComponentConfiguration() {
    Config ret = new Config();
    ret.setMaxTaskParallelism(1);
    return ret;
}
}

我得到了以下错误。有什么帮助吗?我已经确保路径变量有R和Rscript的路径。

代码语言:javascript
复制
17469 [Thread-12-__system] INFO  backtype.storm.daemon.executor - Preparing bolt __system:(-1)
17474 [Thread-12-__system] INFO  backtype.storm.daemon.executor - Prepared bolt __system:(-1)
17480 [Thread-6] INFO  backtype.storm.daemon.executor - Loading executor RBolt:[1 1]
17483 [Thread-6] INFO  backtype.storm.daemon.executor - Loaded executor tasks RBolt:[1 1]
17491 [Thread-6] INFO  backtype.storm.daemon.executor - Finished loading executor RBolt:[1 1]
17491 [Thread-6] INFO  backtype.storm.daemon.worker - Launching receive-thread for 8d8a13de-5e87-4e14-b2c2-59b4dfc070c6:1027
17493 [Thread-14-RBolt] INFO  backtype.storm.daemon.executor - Preparing bolt RBolt:(1)
17496 [Thread-15-worker-receiver-thread-0] INFO  backtype.storm.messaging.loader - Starting receive-thread: [stormId: EventProcessing-1-1457335172, port: 1027, thread-id: 0 ]
17500 [Thread-14-RBolt] INFO  backtype.storm.utils.ShellProcess - Storm multilang serializer: backtype.storm.multilang.JsonSerializer
17510 [Thread-14-RBolt] ERROR backtype.storm.util - Async loop died!
java.lang.RuntimeException: Error when launching multilang subprocess

    at backtype.storm.utils.ShellProcess.launch(ShellProcess.java:64) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]
    at backtype.storm.task.ShellBolt.prepare(ShellBolt.java:99) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]
    at backtype.storm.daemon.executor$fn__5641$fn__5653.invoke(executor.clj:690) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]
    at backtype.storm.util$async_loop$fn__457.invoke(util.clj:429) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]
    at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
Caused by: java.io.IOException: Cannot run program "Rscript" (in directory "/tmp/933c85f3-f5b5-4a60-b342-7d4969b43d46/supervisor/stormdist/EventProcessing-1-1457335172/resources"): error=2, No such file or directory

tmp文件夹中的这个目录不存在,并且是动态创建的。请给我任何建议。

更新:通过在项目的资源文件夹中创建另一个资源文件夹来解决这个问题,这样jar有一个资源文件夹,其中包含R脚本。

EN

回答 1

Stack Overflow用户

发布于 2016-03-08 13:08:50

"shell“组件的全部目的是作为一个独立的进程开始,因此您的脚本需要实现多协议。或者,您可以找到一个实现协议并具有R集成的库,如FsStorm:它实现了multilang,您可以通过R型提供者调用R函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35815670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档