擅长:python、mysql、java
<p>取决于您要做什么以及表结构的外观。我假设您正在尝试使用spark处理许多文件。并希望将数据加载到不同的规范化表中</p>
<p>例如,您可能希望将标题写入一个表中,header->fileInvoices是一对多关系,因此可以是另一个表。在</p>
<ul>
<li><p>当您使用load(filename*.xml)读取多个xml文件时
希望将文件摘要设置为rowtag。然后你会有多个
数据帧中的行,每个文件摘要一行。</p></li>
<li><p>您可以选择另一个数据帧中的标题列并将其写入
一张桌子。</p></li>
<li><p>FileInvoices是struc的数组,可以将它们分解成行
把它们放在另一张桌子上。</p></li>
<li><p>此外,如果每个发票可以包含多个项目,则可以另做一个
分解以使其成为行并存储到另一个表中</p></li>
</ul>
<p>或者您可以进行两次分解并将结果数据帧加载到一个大的非规范化表中。在</p>
<p>这里有一篇关于爆炸如何工作的文章
<a href="https://hadoopist.wordpress.com/2016/05/16/how-to-handle-nested-dataarray-of-structures-or-multiple-explodes-in-sparkscala-and-pyspark/" rel="nofollow noreferrer">https://hadoopist.wordpress.com/2016/05/16/how-to-handle-nested-dataarray-of-structures-or-multiple-explodes-in-sparkscala-and-pyspark/</a></p>