Это моя первая реализация в Hadoop. Я пытаюсь реализовать свой алгоритм вероятностного набора данных в Map Reduce. В моем наборе данных последний столбец будет иметь некоторый идентификатор (количество уникальных идентификаторов в наборе данных равно количеству узлов в моем кластере). Я должен разделить свой набор данных на основе этого значения столбца, и каждый набор записей должен обрабатываться каждым узлом в моем кластере.
Например, если у меня есть три узла в моем кластере, для приведенного ниже набора данных один узел должен обрабатывать все записи с идентификатором = 1, другой — с идентификатором = 2, еще один — с идентификатором = 3.
name time dept id
--------------------
b1 2:00pm z1 1
b2 3:00pm z2 2
c1 4:00pm y2 1
b3 3:00pm z3 3
c4 4:00pm x2 2
Моя функция карты должна принимать каждое разделение в качестве входных данных и обрабатывать его параллельно в каждом узле.
Я просто пытаюсь понять, какой подход возможен в Hadoop. Либо ввести этот набор данных в качестве входных данных для моей функции карты, либо передать дополнительный аргумент с картой, чтобы разделить данные на основе значения идентификатора. Или заранее разделить данные на подмножества «n» (количество узлов) и загрузить их в узлы, если это правильный подход, как можно разделить данные на основе значения и загрузить в разные узлы. Потому что, как я понял из своих чтений, это то, что Hadoop разбивает данные на блоки в зависимости от указанного размера. Как мы можем указать конкретное условие при загрузке. Просто чтобы добавить, я пишу свою программу на python.
Кто-нибудь, пожалуйста, посоветуйте. Спасибо