我想将具有 3 个不同 RowTag 的巨大 XML 文件读入 Apache Spark 数据帧。
RowTag = XML 元素,您在 Spark 中将其解释为一行。
标签
- 包含不同的数据结构
- 不重叠
xml-spark ( https://github.com/databricks/spark-xml ) 只提供一次读取一个 RowTag,所以我需要读取相同的文件 3 次(效率不高)。
有没有办法一次读取文件?
细节:
我有一个巨大的 XML 文件(24 GB),其中包含 3 个列表:
<myFile>
<ContainedResourceList>
<SoundRecording><Title>A</Title></SoundRecording>
... several million records ...
<SoundRecording><Title>Z</Title></SoundRecording>
</ContainedResourceList>
<ContainedReleaseList>
<Release><ReleaseType>Single</ReleaseType></Release>
... several million records ...
<Release><ReleaseType>LP</ReleaseType></Release>
</ContainedReleaseList>
<ContainedTransactionList>
<Transaction><Sales>1</Sales></Transaction>
... several million records ...
<Transaction><Sales>999</Sales></Transaction>
</ContainedTransactionList>
</myFile>
XML 文件有效。我想阅读 RowTags SoundRecording、Release & Transaction。
我更喜欢 Scala 库,但我会为任何支持读取的库感到高兴。
PS: 输出和他的模式如何?
- 最佳选择:3 个 DataFrame 的数组,每个 RowTag 一个
- 丑陋的选项:一个包含所有 3 个数据结构的可能元素的 DataFrame