Java Apache Beam字数计算示例在使用Spark Runner时失败
我一直在尝试使用ApacheBeam,作为初始测试的一部分,我一直在尝试运行word count示例。我一直在尝试Beam提供的MinimalWordCount示例。代码如下:Java Apache Beam字数计算示例在使用Spark Runner时失败,java,linux,apache-spark,hdfs,apache-beam,Java,Linux,Apache Spark,Hdfs,Apache Beam,我一直在尝试使用ApacheBeam,作为初始测试的一部分,我一直在尝试运行word count示例。我一直在尝试Beam提供的MinimalWordCount示例。代码如下: PipelineOptions options = PipelineOptionsFactory.create(); Pipeline p = Pipeline.create(options); p.apply(TextIO.read().from("file:///tmp/shakespea
PipelineOptions options = PipelineOptionsFactory.create();
Pipeline p = Pipeline.create(options);
p.apply(TextIO.read().from("file:///tmp/shakespeare.txt"))
.apply("ExtractWords", ParDo.of(new DoFn<String, String>() {
@ProcessElement
public void processElement(ProcessContext c) {
for (String word : c.element().split(ExampleUtils.TOKENIZER_PATTERN)) {
if (!word.isEmpty()) {
c.output(word);
}
}
}
}))
.apply(Count.<String>perElement())
.apply("FormatResults", MapElements.via(new SimpleFunction<KV<String, Long>, String>() {
@Override
public String apply(KV<String, Long> input) {
return input.getKey() + ": " + input.getValue();
}
}))
.apply(TextIO.write().to("file:///tmp/wordcounts/"));
// Run the pipeline.
p.run().waitUntilFinish();
}
PipelineOptions=PipelineOptionsFactory.create();
Pipeline p=Pipeline.create(选项);
p、 应用(TextIO.read().from)(“file:///tmp/shakespeare.txt"))
.apply(“摘录词语”,第页,共页(新DoFn)(){
@过程元素
公共void processElement(ProcessContext c){
for(字符串字:c.element().split(ExampleUtils.TOKENIZER_模式)){
如果(!word.isEmpty()){
c、 输出(字);
}
}
}
}))
.apply(Count.perElement())
.apply(“FormatResults”,MapElements.via(新的SimpleFunction()){
@凌驾
公共串应用(千伏输入){
返回input.getKey()+“:”+input.getValue();
}
}))
.apply(TextIO.write())到(“file:///tmp/wordcounts/"));
//运行管道。
p、 run().waitUntilFinish();
}
我们的想法是通过spark submit在本地运行它。以下是我的spark submit命令:
$SPARK_HOME/bin/SPARK submit--master local[2]--class test.beam.example.MyWordCount/local/playde-1.0.0-shade.jar--runner=SparkRunner--sparkMaster=local[2]
但是,它会继续失败,并在以下函数中出现NullPointerException:
TextIO.write()到(“file:///tmp/wordcounts/))
以下是堆栈跟踪:
线程“main”java.lang.NullPointerException中出现异常
位于org.apache.beam.sdk.io.FileSystems.matchNewResource(FileSystems.java:544)
如果可能,请访问org.apache.beam.sdk.io.FileBasedSink.ConvertToFileResource(FileBasedSink.java:213)
位于org.apache.beam.sdk.io.TextIO$TypedWrite.to(TextIO.java:679)
位于org.apache.beam.sdk.io.TextIO$Write.to(TextIO.java:997)
当我使用HDFS上的文件运行它时,会运行完全相同的代码。所以基本上是替换
hdfs://而不是文件:///
我需要在这里做更多的事情来指示beam在本地文件系统中查找文件吗