Насколько я понимаю, вы не будете использовать MrJob, если не захотите использовать кластер Hadoop или сервисы Hadoop от Amazon, даже если в примере используется работа с локальными файлами.
MrJob в основном использует " Hadoop Streaming " для отправки задания.
Это означает, что все входные данные, указанные в виде файлов или папок из Hadoop, передаются в преобразователь, а последующие результаты - в преобразователь. Весь маппер получает срез ввода и считает все входные данные схематически одинаковыми, так что он равномерно анализирует и обрабатывает ключ, значение для каждого среза данных.
Исходя из этого понимания, входы схематически совпадают с картографом. Единственный способ включить две разные схематические данные - это чередовать их в одном и том же файле таким образом, чтобы картограф мог понять, что является векторными данными, а какие матричными.
You are actually doing it already.
Вы можете просто улучшить это, имея некоторый спецификатор, если строка является матричными или векторными данными. Как только вы видите векторные данные, к ним применяются предыдущие матричные данные.
matrix, 1, 2, ...
matrix, 2, 4, ...
vector, 3, 4, ...
matrix, 1, 2, ...
.....
Но процесс, который вы упомянули, работает хорошо. Вы должны иметь все данные схемы в одном файле.
Это все еще имеет проблемы, хотя. Карта K, V Reduce лучше работает, когда полная схема присутствует в одной строке и содержит один блок обработки целиком.
Насколько я понимаю, вы уже делаете это правильно, но я думаю, что Map-Reduce не подходит для такого рода данных. Я надеюсь, что кто-то прояснит это даже дальше, чем я мог.