PySpark XML 处理 - 忽略不良记录
Posted
技术标签:
【中文标题】PySpark XML 处理 - 忽略不良记录【英文标题】:PySpark XML processing - Ignoring bad records 【发布时间】:2019-04-04 17:57:19 【问题描述】:我正在使用 Spark XML 库 (HyukjinKwon:spark-xml:0.1.1-s_2.11) 处理一个大型 XML 文件。 XML 处理失败并出现几个记录的分析异常。我想继续处理忽略这些记录的文件。
我有以下用于处理 xml 的代码,我尝试了“DROPMALFORMED”选项但没有帮助。
df = (spark.read.format("xml")
.option("rootTag","Articles")
.option("rowTag", "Article")
.option("inferSchema", "true")
.option("mode", "DROPMALFORMED")
.load("/mnt/RawAdl2/problemfile.xml"))
AnalysisException: "cannot resolve '['Affiliation']' due to data type mismatch: argument 2 requires integral type, however, ''Affiliation'' is of string type.;
我想删除格式错误的记录并继续处理文件。我还有其他选择吗?感谢您的投入!
编辑:查看源代码link 库支持 Malformed 选项。由于我不太熟悉 Scala,因此我不确定我是否为此选项使用了正确的语法。请指教。
查看源代码后,我尝试了以下代码,但没有成功
.option("mode", "DROP_MALFORMED_MODE")
【问题讨论】:
【参考方案1】:尝试设置 badRecords 路径:
.option("badRecordsPath", "/tmp/badRecordsPath")
https://docs.databricks.com/spark/latest/spark-sql/handling-bad-records.html
【讨论】:
我发现问题不在于读取,异常是从同一单元格中的选择生成的。感谢您的回复指出如何处理不良记录。以上是关于PySpark XML 处理 - 忽略不良记录的主要内容,如果未能解决你的问题,请参考以下文章