gpt4 book ai didi

java - 使用java读取spark 2.2中的XML并以键值格式读取预期输出

转载 作者:行者123 更新时间:2023-12-02 11:09:11 25 4
gpt4 key购买 nike

我有一个示例 xml 文件,需要解析它并将其转换为 java [1.8] 中的 Spark 数据集 [版本 2.2] 中的键值

示例.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

有人可以帮忙解决这个问题吗?谢谢

最佳答案

您所需要的只是更改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 |
+----+-----+

希望我的回答对您有帮助

关于java - 使用java读取spark 2.2中的XML并以键值格式读取预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50720111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com