2017-02-16 5 views
2

Я разрабатываю новое поколение системы анализа, которая должна обрабатывать многие события от многих датчиков в почти реальном времени. И для этого я хочу использовать одну из платформ Big Data Analytics, такую ​​как Hadoop, Spark Streaming или Flink.MapReduce: Как передать HashMap в mappers

Чтобы проанализировать каждое событие, мне нужно использовать некоторые метаданные из таблицы (DB) или по крайней мере загрузить его в кешированную карту.

Проблема в том, что каждый преобразователь будет распараллелен на нескольких узлах.

Поэтому у меня есть две вещи, чтобы обращаться:

  • Во-первых, как загрузить/пасс HashMap к картографа?
  • Есть ли способ сохранить HashMap Согласованность между mappers?
+1

DistributedCache - это то, что вы ищете - http://stackoverflow.com/questions/21239722/hadoop-distributedcache-is-deprecated-what-is-the-preferred-api. Вы можете сделать файлы метаданных доступными для всех Mappers. –

+0

Вы также можете построить хэш-файл в методе 'setup()' каждого модуля отображения, если, возможно, запросить свою БД. –

+0

Будете ли вы использовать Hadoop или Spark? Решение может быть совсем другим. Кроме того, вам нужно, чтобы каждый картограф имел одну и ту же информацию или специфичен для каждого картографа? –

ответ

0

Serialize HashMap структура в файл, сохранить его в HDFS и в фазе конфигурации использовании MapReduce работы DistributedCache распространять файл с сериализованным HashMap по всем картографам. Затем на этапе карты каждый преобразователь может прочитать файл, де-сериализовать, а затем получить доступ к этому HashMap.

Смежные вопросы