Google cloud dataflow 通过ApacheBeam/Google云数据流读写XML文件

Google cloud dataflow 通过ApacheBeam/Google云数据流读写XML文件,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,我尝试按照提供的文档从GCS位置读取XML文件: 似乎在配置中存在一些问题,我缺少一些使代码运行所需的部分。我将XML文件保存在GCS位置,并使用下面给出的代码读取XML文件 public class XMLReaderWriter { private static final Logger LOG = LoggerFactory.getLogger(XMLReaderWriter.class); public static void main(String args[]) {

我尝试按照提供的文档从GCS位置读取XML文件:

似乎在配置中存在一些问题,我缺少一些使代码运行所需的部分。我将XML文件保存在GCS位置,并使用下面给出的代码读取XML文件

public class XMLReaderWriter {

private static final Logger LOG = LoggerFactory.getLogger(XMLReaderWriter.class);

public static void main(String args[])
{

    DataflowPipelineOptions options=PipelineOptionsFactory.as(DataflowPipelineOptions.class);
     options.setTempLocation("gs://xyz_test/staging");
     options.setProject("test-1-160106");


     Pipeline p=Pipeline.create(options);

    PCollection<Record> result= p.apply(XmlIO.<Record>read()
             .from("gs://xyz_test/sample.xml")
             .withRootElement("catalog")
             .withRecordElement("title")
             .withRecordClass(Record.class));

  result.apply(ParDo.of(new DoFn<Record,String>(){
                @ProcessElement 

                public void processelement(ProcessContext c)
                {
                    System.out.println(c.element().toString());
                }
             })); 
      p.run(); 
}
公共类XMLReaderWriter{
私有静态最终记录器LOG=LoggerFactory.getLogger(XMLReaderWriter.class);
公共静态void main(字符串参数[])
{
DataflowPipelineOptions=PipelineOptions工厂.as(DataflowPipelineOptions.class);
选项。设置位置(“gs://xyz_测试/分段”);
选项。setProject(“测试-1-160106”);
Pipeline p=Pipeline.create(选项);
PCollection result=p.apply(XmlIO.read()
.from(“gs://xyz_test/sample.xml”)
.withRootElement(“目录”)
.withRecordElement(“标题”)
.withRecordClass(Record.class));
结果。应用(新DoFn()的第1部分){
@过程元素
公共void processelement(ProcessContext c)
{
System.out.println(c.element().toString());
}
})); 
p、 run();
}
代码因异常而失败,下面是该代码的堆栈跟踪的一部分:

Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodError: org.apache.avro.generic.GenericData$Record.<init>()
at org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:207)
at org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:63)
at org.apache.beam.sdk.Pipeline.run(Pipeline.java:295)
at org.apache.beam.sdk.Pipeline.run(Pipeline.java:281)
线程“main”java.lang.RuntimeException中的异常:java.lang.NoSuchMethodError:org.apache.avro.generic.GenericData$Record.() 位于org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:207) 位于org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:63) 位于org.apache.beam.sdk.Pipeline.run(Pipeline.java:295) 位于org.apache.beam.sdk.Pipeline.run(Pipeline.java:281)
以前有人这样做过吗?请让我知道需要进行的代码更改。

此问题现在已解决,但我现在面临一个新问题。“警告:“gs://xyz\u test/sample\u 2.xml”频道未打开”。因此,所有组件的值均为“null”。有任何线索表明此错误代表什么吗?请为新问题打开一个新问题,并提供更完整的详细信息。为此新问题打开一个新问题!!!此问题现在已解决,但我现在面临一个新问题。“警告:“gs://xyz\u test/sample\u 2.xml”频道未打开”。因此,所有组件的值均为“null”。有任何线索表明此错误代表什么吗?请为您的新问题打开一个新问题,并提供更完整的详细信息。为此新问题打开一个新问题!!!