Как я могу проверить схему Json в spark 2.X? - PullRequest
0 голосов
/ 07 июня 2018

Использование Spark потоковой передачи (записано в Scala ) для чтения сообщений от Kafka.Все сообщения представляют собой строки в формате Json.

Определение ожидаемой схемы в локальной переменной expectedSchema с последующим синтаксическим анализом строк в СДР для Json

spark.sqlContext.read.schema(schema).json(rdd.toDS())

Проблема: Spark будет обрабатывать все записи / строки, пока у него есть некоторые поля, которые я пытаюсь прочитать, даже если фактический формат Json (то есть схема) входной строки (String) не совпадает с моим expectedSchema.

Предположим, что ожидаемая схема выглядит следующим образом (в Json): {"a": 1,"b": 2, "c": 3} и строка ввода выглядит следующим образом: {"a": 1, "c": 3} Spark обработает ввод без сбоев.

Я попытался использовать решение, описанноездесь: Как применить схему с nullable = false к чтению json

, но assert(readJson.schema == expectedSchema) никогда не завершится ошибкой, даже если я намеренно отправляю входные строки с неверной схемой Json.

  1. Есть ли способ проверить, соответствует ли фактическая схема заданной строки ввода моей ожидаемой схеме?

  2. Можно ли вставитьнулевое значение для «заполнения» полей, отсутствующих в «поврежденной» строке схемы?

...