Spark Streaming в файлах сообщений в реальном времени - PullRequest
0 голосов
/ 06 декабря 2018

В моем проекте есть требование обрабатывать файлы сообщений (.txt) в режиме реального времени.Я имел обыкновение получать файлы сообщений от третьих лиц в режиме реального времени в нашу зону посадки, и оттуда мы должны забрать файлы для обработки.Ниже предлагается поток данных.

Источник -> Зона посадки -> HDFS -> PySpark -> Паркет / CSV -> Хранилище данных

Всякий раз, когда я вижу новый файлв зоне приземления это должно быть перенесено и перенесено в HDFS, а затем последующий процесс должен обрабатывать его в реальном времени.Могу ли я подойти к этому варианту использования потоковой передачи PySpark?Если да, пожалуйста, поделитесь некоторыми деталями и ссылками, если это возможно.

1 Ответ

0 голосов
/ 06 декабря 2018

Да, вы можете использовать Spark Structured Streaming для обработки файлов сообщений в режиме реального времени.Структурированная потоковая передача поддерживает различные источники ввода, вы можете настроить использование FileSource в качестве источника данных.

Файловый источник читает файлы, записанные в каталоге, в виде потока данных.Поддерживаемые форматы файлов: текст, csv, json, orc, parquet.Обратите внимание, что файлы должны быть атомарно помещены в заданный каталог, в вашем случае он будет работать нормально, если вы перемещаете файл атомарно из Landing Zone в HDFS.

Подробнее см.to: https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#input-sources для API: https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.streaming.DataStreamReader

Примечание Структурированная потоковая передача поддерживает чтение данных из вложенных каталогов, мы можем предоставить глобальные пути в качестве входных данных для пути к файловому ресурсу.См .: Spark Структурированная потоковая передача - чтение файла из вложенных каталогов

...