【问题标题】:Read XML in spark 2.2 with java and expected output in key value format使用 java 在 spark 2.2 中读取 XML,并以键值格式读取预期输出
【发布时间】:2018-06-06 20:33:46
【问题描述】:

我有一个示例 xml 文件,需要对其进行解析并将其转换为 java [1.8] 中 spark dataset[Version 2.2] 中的键值

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

【问题讨论】:

    标签: java scala apache-spark


    【解决方案1】:

    您只需更改 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  |
    +----+-----+
    

    希望回答对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-23
      • 2021-06-30
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 2018-03-06
      • 2018-06-20
      • 2013-07-27
      相关资源
      最近更新 更多