如何解决xml文件中不相关的损坏记录,同时将其读取为spark DF
我正在尝试将Spark中的DF格式的XML文件读取。
XML文件:
<cool>
<incollection mdate="2002-01-03" key="books/acm/kim95/Blakeley95">
<author>José A. Blakeley</author>
<title>OQL[C++]: Extending C++ with an Object Query Capability.</title>
<pages>69-88</pages>
<booktitle>Modern Database Systems</booktitle>
<url>db/books/collections/kim95.html#Blakeley95</url>
<year>1995</year>
</incollection>
</cool>
代码:
val corrupt_records_handled_DF=spark.read.format("xml").option("rootTag","cool").option("rowTag","incollection").load("/usr/local/inputs/temp.xml")
我将其作为损坏的记录。
火花版本:2.4.6 软件包:com.databricks:spark-xml_2.11:0.9.0
输出:
scala> val corrupt_records_handled_DF=spark.read.format("xml").option("rootTag","incollection").load("/usr/local/inputs/temp.xml")
corrupt_records_handled_DF: org.apache.spark.sql.DataFrame = [_corrupt_record: string]
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|_corrupt_record |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|<incollection mdate="2002-01-03" key="books/acm/kim95/Blakeley95">
<author>José A. Blakeley</author>
<title>OQL[C++]: Extending C++ with an Object Query Capability.</title>
<pages>69-88</pages>
<booktitle>Modern Database Systems</booktitle>
<url>db/books/collections/kim95.html#Blakeley95</url>
<year>1995</year>
</incollection>|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
你们可以帮我吗?
解决方法
这是由于作者标记中的&。我用sed命令用&代替&。
sed -e's /&/和/ g'./temp.xml> ./temp1.xml #replaces和
sed -e's /&/和/ g'./temp.xml> ./temp2.xml#替换并带有空格
,您的问题位于此处。在 xml 文件中,对于空节点,您必须编写或 注意,在 IntelliJ 中,当你打开这个 xml 文件时,你可以用红色突出显示这个错误。
赫查姆
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。