Я пытаюсь прочитать индекс ElasticSearch , который содержит миллионы документов, каждый из которых имеет переменное количество полей. У меня есть схема, которая имеет 1000 полей, каждое из которых имеет свое имя и тип.
Теперь, когда я создаю RDD корыто ES-Hadoop соединитель и позже конвертирую в DataFrame , указав схему, он не может сказать -
Входная строка не имеет ожидаемого количества значений, требуемых
схема
У меня есть несколько вопросов.
1. Можно ли иметь RDD / DF со строками, содержащими переменное количество полей? Если нет, что является альтернативой, кроме добавления нулевого значения для пропущенных полей в каждом столбце?
Я вижу, что по умолчанию Spark преобразует все в StringType
, когда я использую sc.newAPIHadoopRDD()
вызов. Как я могу типизировать их, чтобы исправить тип, основанный на имени поля, которое у меня есть в моей схеме? Какое-то отображение?
Я хочу написать это в формате Parquet со схемой, добавленной в файл. Что происходит с этими пропущенными полями по сравнению со схемой, имеющей тысячи полей.