Читать XML в версии 2.2 с Java и ожидаемым выводом в формате значения ключа - PullRequest
0 голосов
/ 06 июня 2018

У меня есть образец XML-файла, и мне нужно проанализировать его и преобразовать в значение ключа в наборе данных spark [Версия 2.2] в java [1.8]

sample.xml -

               <?xml version="1.0" encoding="UTF-8"?>

             -<RECORD>
               -<PROP NAME="xxx">
                    <PVAL>123</PVAL>
                </PROP> 
                -<PROP NAME="yyy">
                    <PVAL>456</PVAL>
                </PROP> 
               -<PROP NAME="zzz">
                    <PVAL>786</PVAL>
                </PROP> 
             -<RECORD>

Пробовал с кодом ниже -

            Dataset<Row> xmlDS =  spark.read()
                                .format("com.databricks.spark.xml")
                                .option("rowTag", "RECORD")
                               .load("sample.xml");

           XMLDS.printSchema();


           root
           |-- PROP: array (nullable = true)
           |    |-- element: struct (containsNull = true)
           |    |    |-- PVAL: string (nullable = true)
           |    |    |-- _NAME: string (nullable = true)

вывод, который я получил выше одного -

                +---------------------------------
                |PROP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                |
                +---------------------------------
                |[[123,xxx], [456,yyy], [786,zzz]]

Я хочу Ожидаемый вывод в формате пары ключ-значение в наборе данных

         NAME                   PVAL
         -----------------------------
         xxx                     123
         yyy                     456
         zzz                     786

Может ли кто-нибудь помочь в этом?. Thx

1 Ответ

0 голосов
/ 06 июня 2018

Все вам нужно изменить rowTag и добавить rootTag как

Dataset<Row> xmlDS =  spark.read()
        .format("com.databricks.spark.xml")
        .option("rootTag", "RECORD")
        .option("rowTag", "PROP")
        .load("sample.xml");

xmlDS.printSchema();
xmlDS.show(false);

, что должно дать вам

root
 |-- PVAL: long (nullable = true)
 |-- _NAME: string (nullable = true)

+----+-----+
|PVAL|_NAME|
+----+-----+
|123 |xxx  |
|456 |yyy  |
|786 |zzz  |
+----+-----+

Я надеюсь, чтоответ полезен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...