【问题标题】:Unable to use XmlSource for reading an XML file stored in GCS Bucket无法使用 XmlSource 读取存储在 GCS Bucket 中的 XML 文件
【发布时间】:2017-08-30 10:49:51
【问题描述】:

以前有人试过这个代码吗?

XmlSource<String> source = XmlSource.<String>from("gs://balajee_test/sample_3.xml")
              .withRootElement("book")
              .withRecordElement("author")
              .withRecordElement("title")
              .withRecordElement("genre")
              .withRecordElement("price")
              .withRecordElement("description")
              .withRecordClass(XMLFormatter.class);

PCollection<String> output = p.apply(Read.from(source));

https://beam.apache.org/documentation/sdks/javadoc/0.4.0/org/apache/beam/sdk/io/XmlSource.html

org.apache.beam.sdk.io.xml.XmlSource

希望我使用了正确的 'XmlSource' 类,但仍然无法解决方法 'from("gs://balajee_test/sample_3.xml")' 的依赖关系,并获得相同的编译错误。错误信息是:

未定义 XmlSource 类型的 from(String) 方法

这个问题可能太傻了,但我真的需要解决它才能读取存储在 GCS Bucket 中的 XML 文件。

【问题讨论】:

  • 您使用的是什么版本的 SDK?这些文档适用于非常旧的版本 (.4)。当前版本是 2.1。如果您使用的是较新版本的 SDK,您需要:beam.apache.org/documentation/sdks/javadoc/2.1.0 此外,您还有两个同名的“froms”。这是故意的吗?如果您使用的是旧版 SDK,可能会出现问题。
  • 对不起。这两个“来自”不是故意的。在错误地发布此查询时,我将相同的“来自”语句复制了两次。我正在使用 2.0 版本。是这个问题吗?
  • 是的,2.0 版本的 XML 源 API 已更改。我会尝试使用该特定版本的新文档。 beam.apache.org/documentation/sdks/javadoc/2.0.0 可以通过查找 org.apache.beam.sdk.io.xml 来查看 XML Source

标签: google-cloud-dataflow apache-beam


【解决方案1】:

从 cmets 看来,使用的 SDK 似乎是 2.0,它具有定义从 XML 读取的新方法。查看新文档以了解如何阅读。

SDK IO 文档(适用于 2.0.0)可在此处找到:beam.apache.org/documentation/sdks/javadoc/2.0.0

【讨论】:

  • 嗨,劳拉,我认为这种方式会派上用场,因为您提到的链接已经给我带来了麻烦。代码运行成功,但我不明白为什么相应 XML 元素的值没有被映射,我得到的所有组件值都是“null”。请点击链接了解更多详情:stackoverflow.com/questions/45933068/…
  • 这是另一个问题,对吧?和这个不建的问题分开?
  • 完全正确!!!这是您给我的解决方案的问题。我已经尝试过并面临上述问题。请您对此进行调查,并为我提供一些解决“空”值问题的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
相关资源
最近更新 更多