【发布时间】:2019-04-02 08:40:57
【问题描述】:
我想将一个包含 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 一个
- 丑陋的选项:一个 DataFrame 包含所有 3 个数据结构的可能元素
【问题讨论】:
标签: spark-dataframe databricks apache-spark-xml