2015-08-02 1 views
1

Я пытаюсь обработать кучу больших файлов журнала json с помощью искры, но он терпит неудачу каждый раз с scala.MatchError. Я даю ему схему или нет.как проигнорировать MatchError, а затем обработать большой файл json в spark-sql?

Я просто хочу пропустить строки, которые не соответствуют схеме, но я не могу найти, как в документах искры.

Я знаю, что написать json-парсер и сопоставить его с файлом json. RDD может все проделать, но я хочу использовать sqlContext.read.schema(schema).json(fileNames).selectExpr(...), потому что его намного проще в обслуживании.

+0

Если проверка данных не является вариантом, я сомневаюсь, что есть простой способ. Похоже, вы можете исправить ['JacksonParser.parseJson'] (https://github.com/apache/spark/blob/c025c3d0a1fdfbc45b64db9c871176b40b4a7b9b/sql/core/src/main/scala/org/apache/spark/sql/json/ JacksonParser.scala # L180) для регистрации вместо исключения исключения. – zero323

ответ

0

Это будет решена в Спарк 1.6.1 https://issues.apache.org/jira/browse/SPARK-12057

На данный момент вы можете скомпилировать версию искрой, которая включает в себя исправление (по существу повышая исключение синтаксического анализа вместо общего исключения на MatchError, а затем отчетности запись как поврежденный - см. код https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/json/JacksonParser.scala)

Смежные вопросы