Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用壳螺栓构建风暴拓扑_Java_R_Apache Storm - Fatal编程技术网

Java 使用壳螺栓构建风暴拓扑

Java 使用壳螺栓构建风暴拓扑,java,r,apache-storm,Java,R,Apache Storm,我目前正在尝试实现一个与R语言集成的Storm拓扑 作为起点,我采用了以下项目(),该项目通过扩展ShellBolt类来实现R集成,并使用R库来处理java和R端之间的通信 我的问题是,如果我创建一个基于常规(仅限java)螺栓的拓扑,我可以将它们链接在一起而不会出现问题。然而,当链条中间的一个螺栓是R型外壳螺栓时,该材料只是与分开。 5661 [Thread-18] ERROR backtype.storm.util - Async loop died! java.lang.RuntimeEx

我目前正在尝试实现一个与R语言集成的Storm拓扑

作为起点,我采用了以下项目(),该项目通过扩展ShellBolt类来实现R集成,并使用R库来处理java和R端之间的通信

我的问题是,如果我创建一个基于常规(仅限java)螺栓的拓扑,我可以将它们链接在一起而不会出现问题。然而,当链条中间的一个螺栓是R型外壳螺栓时,该材料只是与

分开。
5661 [Thread-18] ERROR backtype.storm.util - Async loop died!
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: Pipe to subprocess seems to be broken! No output read.
Shell Process Exception:


at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:87) ~[storm-0.9.0-wip16.jar:na]
at backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:58) ~[storm-0.9.0-wip16.jar:na]
at backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:62) ~[storm-0.9.0-wip16.jar:na]
at backtype.storm.daemon.executor$fn__3557$fn__3569$fn__3616.invoke(executor.clj:715) ~[storm-0.9.0-wip16.jar:na]
at backtype.storm.util$async_loop$fn__436.invoke(util.clj:377) ~[storm-0.9.0-wip16.jar:na]
at clojure.lang.AFn.run(AFn.java:24) ~[clojure-1.4.0.jar:na]
at java.lang.Thread.run(Unknown Source) ~[na:1.7.0_25]

Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Pipe to subprocess seems to be broken! No output read.
更具体地说,以下拓扑按预期工作:

TopologyBuilder builder = new TopologyBuilder();

builder.setSpout("spout", new RandomSentenceSpout(), 1);
builder.setBolt("permutebolt", new PermuteBolt(), 1).shuffleGrouping("spout");
其中,PermuteBolt是一个R型壳体螺栓。本例的日志显示了预期的输出:

6246 [Thread-18] INFO  backtype.storm.daemon.task - Emitting: spout default [four score and seven years ago]
6246 [Thread-16] INFO  backtype.storm.daemon.executor - Processing received message source: spout:3, stream: default, id: {}, [four score and seven years ago]
6261 [Thread-23] INFO  backtype.storm.daemon.task - Emitting: permutebolt default ["PERMUTE seven years ago and four score"]
但是,如果我添加了另一个从第一个螺栓获取数据的螺栓,例如:

builder.setBolt("permutebolt", new PermuteBolt(), 1).shuffleGrouping("spout");
builder.setBolt("identity", new IdentityBolt(new Fields("identity")), 1).fieldsGrouping("permutebolt", new Fields("permutation"));
它失败,上面打印了跟踪。另外,奇怪的是,第二个失败的例子包含在项目中

这是以前有人遇到过的问题吗


更新:我注意到只有在使用R Shell螺栓时才会出现这种情况,此后我尝试启动使用python脚本的螺栓,并且能够正常链接它们。

@andrei,这在今天上传到github的1.01中得到了修复:

它已提交给CRAN,并将很快提供

谢谢你的报道


-Allen

您能给我们看一下PermuteBolt和IdentityBolt代码吗?从技术上讲,这不是我的代码,正如我提到的,这个示例是随项目提供的。身份螺栓内置在Storm中,据我所知,它只会发出它订阅的任何内容(因此得名),而PermuteBolt运行一个R脚本,并在它和Storm之间调解数据这是PermuteBolt和