Apache Beam字数统计示例在本地使用Spark Runner失败

时间:2018-03-27 03:26:06

标签: java linux apache-spark hdfs apache-beam

我一直在尝试使用Apache Beam,作为初始测试的一部分,我一直在努力让word count运行。我一直在尝试Beam提供的MinimalWordCount示例。代码如下:

    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();
}

这个想法是通过spark-submit在本地运行它。以下是我的spark-submit命令:

  

$ SPARK_HOME / bin / spark-submit --master local [2] --class test.beam.example.MyWordCount /local/playground-1.0.0-shaded.jar --runner = SparkRunner --sparkMaster = local [2]

但是,它在以下函数中继续使用NullPointerException失败:

  

TextIO.write()。为了(&#34;文件:/// TMP / wordcounts /&#34)

以下是stacktrace:

  

线程中的异常&#34; main&#34;显示java.lang.NullPointerException

     

at org.apache.beam.sdk.io.FileSystems.matchNewResource(FileSystems.java:544)

     

at org.apache.beam.sdk.io.FileBasedSink.convertToFileResourceIfPossible(FileBasedSink.java:213)

     

at org.apache.beam.sdk.io.TextIO $ TypedWrite.to(TextIO.java:679)

     

at org.apache.beam.sdk.io.TextIO $ Write.to(TextIO.java:997)

当我在HDFS上运行文件时,会运行完全相同的代码。所以基本上替换

  

hdfs://而不是file:///

我是否需要在此处执行更多操作以指示光束在本地文件系统中查找文件?

0 个答案:

没有答案