Обработка PySpark XML - Игнорирование плохих записей - PullRequest
0 голосов
/ 04 апреля 2019

Я обрабатываю большой XML-файл с использованием Spark XML Library (HyukjinKwon: spark-xml: 0.1.1-s_2.11). Обработка 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.;

Я хотел бы удалить поврежденные записи и продолжить обработку файла. Есть ли другой вариант, который я мог бы попробовать? Цените входы!

РЕДАКТИРОВАТЬ: Глядя на исходный код ссылка опция Malformed поддерживается библиотекой. Поскольку я не очень хорошо разбираюсь в Scala, я не совсем уверен, использую ли я правильный синтаксис для этой опции. Пожалуйста, порекомендуйте.

Пройдя исходный код, я попробовал этот код ниже, но не повезло

.option("mode", "DROP_MALFORMED_MODE")

1 Ответ

0 голосов
/ 05 апреля 2019

Попробуйте установить путь badRecords:

.option("badRecordsPath", "/tmp/badRecordsPath")

https://docs.databricks.com/spark/latest/spark-sql/handling-bad-records.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...