Преобразование Xml в Avro из Kafka в hdfs с помощью потоковой передачи искры или потока

Я хочу преобразовать файлы xml в формат avro. Данные будут в формате xml и сначала попадут в тему kafka. Затем я могу использовать поток или искровую потоковую передачу для приема и преобразования из xml в avro и размещения файлов в hdfs. У меня среда cloudera.

Когда файлы avro попадают в hdfs, я хочу иметь возможность читать их в таблицы кустов позже.

Мне было интересно, как лучше всего это сделать? Я пробовал автоматическое преобразование схемы, такое как spark-avro (это было без потоковой передачи искр), но проблема в том, что spark-avro преобразует данные, но hive не может их прочитать. Spark avro преобразует xml в фрейм данных, а затем из фрейма данных в avro. Файл avro может быть прочитан только моим искровым приложением. Я не уверен, правильно ли я это использую.

Я думаю, мне нужно будет определить явную схему для схемы avro. Не знаю, как это сделать для файла xml. Он имеет несколько пространств имен и довольно массивен.


person Defcon    schedule 31.05.2016    source источник


Ответы (1)


Если вы используете cloudera (поскольку у вас есть flume, может быть, он у вас есть), вы можете использовать морфлайн для работы над преобразованием на уровне записи. Вы можете использовать пакетную / потоковую передачу. Дополнительную информацию можно найти здесь.

person Ramzy    schedule 31.05.2016
comment
Вы знаете, может ли morphline читать xml, а затем конвертировать в avro? - person Defcon; 01.06.2016
comment
Morphline может читать содержимое XML и писать в avro. Для вашего варианта использования не существует команды прямого преобразования. Либо вы можете исследовать использование морфлайнов, либо можете запланировать задание уменьшения / искры карты для чтения каждого файла / записи и преобразования в avro. Morphline имеет готовую к использованию партиями и лотками. - person Ramzy; 02.06.2016