Я пытаюсь прочитать XML с пользовательской схемой в кадре данных, но не могу извлечь значения.
Я попытался настроить параметры rowTag и rootTag, но ничего не работает.
Этоэто схема, которую я использую:
val input = StructType(
Array(
StructField("dnum", IntegerType, true),
StructField("dtype", StringType, true),
StructField("dname", StringType, true),
StructField("dloc", StringType, true)))
val bookschema = StructType(Array(
StructField("cost", DoubleType, true),
StructField("details", ArrayType(input, true),
true),
StructField("name", StringType, true),
StructField("num", LongType, true)))
val bookdataschema = StructType(Array(
StructField("count", IntegerType, true),
StructField("lang", StringType, true)))
val schema = StructType(Array(
StructField("bookdata", bookdataschema, true),
StructField("book", bookschema, true)))
Вот как читается файл:
sqc.read.format("com.databricks.spark.xml")
.option("rootTag", "books")
.schema(schema)
.load(filePath)
Пример xml:
<books>
<bookdata>
<count>4</count>
<lang>English</lang>
</bookdata>
<book>
<num>11</num>
<name>A</name>
<cost>200.00</cost>
<details>
<dnum>1</dnum>
<dtype>X</dtype>
</details>
<details>
<dnum>5</dnum>
<dtype>A</dtype>
</details>
</book>
<book>
<num>12</num>
<name>B</name>
<cost>300.00</cost>
<details>
<dnum>2</dnum>
<dtype>Y</dtype>
</details>
</book>
</books>
Ive to goо присоединении некоторых дополнительных столбцов внутри тега детали отдельной книги.Но как прочитать текущие данные в кадре данных, чтобы в нем были все строки для записей.Когда я пытаюсь прочитать его с помощью «books» как rowTag, он возвращает только 1 строку в кадре данных со значением bookdata и последним значением book.
+-----------+------------------------------------------+
|bookdata |book |
+-----------+------------------------------------------+
|[4,English]|[300.0,WrappedArray([2,Y,null,null]),B,12]|
+-----------+------------------------------------------+
В данный момент я просто забочусь о деталях тега bookпотому что мне нужно добавить некоторые вложенные теги внутри деталей, но конечный выходной файл должен также содержать данные книжных данных при записи DF в XML.Как мне это решить?