Как добавить дополнительный тег при создании файла XML из фрейма данных spark
Вот как я создаю XML-файл из парка данных парка
val FFRowCount = dfMainOutputFinalWithoutNull.groupBy("DataPartition", "StatementTypeCode").count
FFRowCount.coalesce(1).write.format("com.databricks.spark.xml")
.option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
.option("rootTag", "FFFileType")
.option("rowTag", "FFPhysicalFile")
.save(descrFileURL)
Это дает мне XML-файл в формате ниже
<FFFileType>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>CAS</StatementTypeCode>
<count>13</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>SelfSourcedPublic</DataPartition>
<StatementTypeCode>GEO</StatementTypeCode>
<count>17</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>BAL</StatementTypeCode>
<count>24</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>SelfSourcedPublic</DataPartition>
<StatementTypeCode>BAL</StatementTypeCode>
<count>11</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>ThirdPartyPrivate</DataPartition>
<StatementTypeCode>INC</StatementTypeCode>
<count>21</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>INC</StatementTypeCode>
<count>73</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>SelfSourcedPrivate</DataPartition>
<StatementTypeCode>BAL</StatementTypeCode>
<count>19</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>BUS</StatementTypeCode>
<count>12</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>GEO</StatementTypeCode>
<count>13</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>SelfSourcedPrivate</DataPartition>
<StatementTypeCode>INC</StatementTypeCode>
<count>42</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>OPM</StatementTypeCode>
<count>30</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>SelfSourcedPublic</DataPartition>
<StatementTypeCode>BUS</StatementTypeCode>
<count>11</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>ESG</StatementTypeCode>
<count>233</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>PEN</StatementTypeCode>
<count>7</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>CUS</StatementTypeCode>
<count>1</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>SelfSourcedPublic</DataPartition>
<StatementTypeCode>INC</StatementTypeCode>
<count>106</count>
</FFPhysicalFile>
<FFPhysicalFile>
<DataPartition>Japan</DataPartition>
<StatementTypeCode>FTN</StatementTypeCode>
<count>2</count>
</FFPhysicalFile>
Но мне нужно отформатировать мой XML-файл, как показано ниже. Который имеет некоторые дополнительные теги и жестко закодированные элементы.
Это следующий формат, который я пытаюсь достичь.
<?xml version="1.0" encoding="UTF-8"?>
<FlatFileDescriptor xmlns="http://">
<FFId>urn:uuid:0ae79b00-8243-443b-aa03-46b3decac263</FFId>
<FFTimeStamp>2012-03-20T00:00:00.0Z</FFTimeStamp>
<FFContentItem ffMajVers="1" ffMinVers="0.0">FinancialLineItem</FFContentItem>
<FFColumnDelimiter>|^|</FFColumnDelimiter>
<FFRowDelimiter>|!|\r\n</FFRowDelimiter>
<FFFileEncoding>UTF-8</FFFileEncoding>
<FFHeaderRow>true</FFHeaderRow>
<FFFileType>
<FFPhysicalFile>
<FFFileName>Fundamental.FinancialLineItem.FinancialLineItem.ThirdPartyPrivate.BAL.1.2017-11-28-1147.Full.zip</FFFileName>
<FFRowCount>25166710</FFRowCount>
</FFPhysicalFile>
<FFPhysicalFile>
<FFFileName>Fundamental.FinancialLineItem.FinancialLineItem.ThirdPartyPrivate.BUS.1.2017-11-28-1147.Full.zip</FFFileName>
<FFRowCount>0</FFRowCount>
</FFPhysicalFile>
Так классически я хочу добавить некоторые s=constant
элемент к его заголовку. Также я хочу отобразить или изменить DataPartition с именем FFFile и считать как FFCount.
Пожалуйста, предложите любой указатель для начала. Должен ли я создать схему для этого?