Spark Streaming объединяется с данными GreenPlum / Postgres.Подход - PullRequest
0 голосов
/ 06 июня 2018

Что у меня есть?

  • У меня есть приложение Spark Streaming (на Kafka Streams) в кластере Hadoop, которое агрегирует каждые 5 минут клики пользователей и некоторые действия, выполненныена веб-сайте и преобразует их в метрики.

  • Также у меня есть таблица в GreenPlum (в ее собственном кластере) с данными пользователей, которые могут обновляться.Эта таблица заполняется с использованием репликации логического потокового журнала через Kafka.Размер таблицы составляет 100 млн. Пользователей.

Что я хочу?

Я хочу присоединяться к Spark Streams со статическими данными из GreenPlum каждые 1 или 5минут, а затем объединить данные, уже используя, например, возраст пользователя из статической таблицы.

Примечания

Определенно, мне не нужно читать все записи из таблицы пользователей.Достаточно стабильный основной сегмент + количество новых пользователей, регистрируемых каждую минуту.В настоящее время я использую PySpark 2.1.0

Мои решения

  1. Скопируйте данные из кластера GreenPlum в кластер Hadoop и сохраните их в виде файлов orc / parquet.Каждые 5 минут добавляйте новые файлы для новых пользователей.Один раз в день перезагружайте все файлы.

  2. Создайте новую БД для репликации Hadoop и журнала установки через Kafka, как это делается для GreenPlum.Чтение данных из БД и использование встроенных объединений Spark Streaming.

  3. Чтение данных из GreenPlum на Spark в кеше.Объединение потоковых данных с кешем.

  4. Каждые 5 минут сохраняйте / добавляйте новые пользовательские данные в файл, игнорируйте старые пользовательские данные.Сохраните дополнительный столбец, например last_action, чтобы обрезать этот файл, если пользователь не был активен на веб-сайте в течение последних 2 недель.Таким образом, объедините этот файл с потоком.

Вопросы

  • Какие из этих решений больше подходят для MVP?для производства?
  • Есть ли лучшие решения / лучшие практики для такого рода проблем.Немного литературы)

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Возможно, вы захотите проверить разъем искры GPDB -

Вы можете загружать данные непосредственно из сегментов в Spark.В настоящее время, если вы хотите выполнить обратную запись в GPDB, вам нужно использовать стандартную JDBC для мастера.

0 голосов
/ 06 июня 2018

Spark потоковое чтение данных из кеша, как Apache Geode, сделать это лучше.использовал этот подход в случае мошенничества в реальном времени.В ореховой скорлупе у меня есть функции, сгенерированные в базе данных Greenplum с использованием исторических данных.Данные объектов и некоторые данные для принятия решений передаются в geode.Элементы периодически обновляются (с интервалом 10 минут), а затем обновляются в геоданных.Spark scoring потоковое задание постоянно оценивает транзакции как входящие без чтения от Greenplum.Также задание потокового воспроизведения помещает счет в geode, который синхронизируется с Greenplum с использованием другого потока.У меня был искровой поток, работающий на литейном облаке с использованием k8Это очень высокий уровень, но он должен дать вам представление.

...