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 处理 - 忽略不良记录的主要内容,如果未能解决你的问题,请参考以下文章

忽略 BigQuery 中的错误 CSV 记录

如何访问 pyspark 中的“_corrupt_record”列?

pyspark错误记录1: Py4JJavaError

如何在 pyspark 中查找不合规的行

PySpark简介及DF数据处理操作总结

Pyspark没有记录到文件