使用Spotify Scio处理XML文件(用于apache beam的scala包装器)

时间:2017-09-28 03:58:23

标签: xml apache-beam spotify-scio

Apache beam java sdk支持读取大型xml输入文件,使用org.apache.beam.sdk.io.xml.XmlIO(我查看了2.1.0版本)

有没有人知道Scio是否允许您这样做或有示例?我有一组非常大的xml文件,我想处理它。

1 个答案:

答案 0 :(得分:2)

您可以使用自定义输入转换对Scio执行此操作。通常,您需要为没有本机Scio接口的任何输入源执行此操作。

示例:

import org.apache.beam.sdk.io.xml._


val xmlInputTransform = XmlIO.read()
  .from("file or pattern spec")         // TODO: specify file name or Java "glob" file pattern to read multiple XML files
  .withRootElement("root element")      // TODO: specify name of root element
  .withRecordElement("record element")  // TODO: specify name of record element
  .withRecordClass(classOf[Record])     // TODO: Define JAXB annotated Record class

// xmls is an SCollection[Record]
val xmls = sc.customInput("fromXML", xmlInputTransform)

有关详细信息,请参阅Apache Beam Java SDK参考中的XmlIO.Read部分:https://beam.apache.org/documentation/sdks/javadoc/2.2.0/