Обработка XML с использованием Apache Flink

#java #xml-parsing #apache-flink #flink-streaming

#java #xml-синтаксический анализ #apache-flink #flink-потоковая передача

Вопрос:

Я новичок в Apache Flink, а также в распределенной обработке. Я уже ознакомился с руководством по быстрой настройке Flink и понимаю основы MapFunctions. Но я не смог найти конкретный пример для обработки XML. Я читал о Hadoops XmlInputFormat, но не смог понять, как его использовать.

Мне нужно, чтобы у меня был огромный (100 МБ) XML-файл формата, как показано ниже,

 <Class>
    <student>.....</student>
    <student>.....</student>
    .
    .
    .
    <student>.....</student>
</Class>
  

Процессор flink прочитает файл из HDFS и начнет его обработку (в основном, повторит все элементы student)

Я хочу знать (с точки зрения непрофессионала), как я могу обработать xml и создать список объектов student.

Было бы весьма полезно объяснение более простого непрофессионала

Ответ №1:

Apache Mahout XmlInputFormat для Apache Hadoop извлекает текст между двумя тегами (в вашем случае, вероятно, <student> и </student> ). Flink предоставляет оболочки для использования входных форматов Hadoop, например, с помощью readHadoopFile() метода ExecutionEnvironment .

Если вы не хотите использовать XmlInputFormat и если ваш XML-файл хорошо отформатирован, т. Е. Каждая запись учащегося находится в одной строке, вы можете использовать обычный TextInputFormat от Flink, который читает файл построчно. Последующая FlatMap функция может анализировать все строки student и отфильтровывать все остальные.