#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 и отфильтровывать все остальные.