Apache Flink 的 XmlInputFormat

XmlInputFormat for Apache Flink

有没有类似Mahout's XmlInputFormat但Flink的东西?

我有一个很大的 XML 文件,我想提取特定的元素。在我的例子中,它是一个维基百科转储,我需要获取所有 <page> 标签。

即如果我有文件

<mediawiki>
  <siteinfo>...</siteinfo>
  <page>...</page>
  <page>...</page>
  <page>...</page>
</mediawiki>

我想获取所有 3 条记录 <page>...</page> 以用于映射器。理想情况下,它应该是有效的 XML,xpath 查询 /mediawiki/page 会 return。

Mahout 的 XmlInputFormat 扩展了 Hadoop 的 TextInputFormat。 Flink 具有 Hadoop InputFormats 的通用包装器,因此也应该支持 XmlInputFormat。

要使用 Hadoop InputFormats 读取数据,您可以执行以下操作:

DataSet<Tuple2<LongWritable, Text>> input =
  env.readHadoopFile(new TextInputFormat(), LongWritable.class, Text.class, textPath);

详情见documentation