Как сделать внешнюю справочную таблицу или базу данных доступными для задания Hadoop MapReduce? - PullRequest
0 голосов
/ 22 июля 2011

Я анализирую большое количество файлов в задании Hadoop MapReduce с входными файлами в формате .txt. И мой маппер, и мой редуктор написаны на Python.

Однако моему модулю mapper требуется доступ к содержимому внешнего csv-файла, который в основном представляет собой просто большую таблицу для поиска эталонных значений для преобразования, которое выполняет mapper.

До сих пор я только что маппером загружал файл в память из локального каталога, чтобы сделать его доступным как переменная Python. Поскольку файл довольно большой (несколько тысяч строк и столбцов), загрузка занимает относительно много времени (около 10 секунд, слишком много для моих целей). Проблема в том, что Hadoop, кажется, повторно выполняет скрипт mapper для каждого нового входного файла или разбивает большие входные файлы на более мелкие, что приводит к ненужной загрузке моего csv-файла в память снова и снова каждый раз, когда новый ввод- файл обработан.

Есть ли способ заставить Hadoop загрузить файл только один раз и каким-то образом сделать его доступным для всех? После поиска в Google таких имен, как Hive, Pig, sqlite, но я никогда не видел примеров, чтобы проверить, действительно ли они полезны для этой цели.

По сути, мне нужно было бы быстро получить доступ к какой-либо базе данных или словарю при выполнении задания Hadoop. Формат моей справочной таблицы не обязательно должен быть CSV, я достаточно гибок в преобразовании этих данных в разные форматы.

Ответы [ 2 ]

0 голосов
/ 26 июля 2011

Вам, вероятно, стоит взглянуть на Sqoop .Он импортирует ваши данные из базы данных в HDFS, чтобы вы могли обрабатывать их с помощью Map Reduce ..

0 голосов
/ 22 июля 2011

Да, посмотрите параметр -files в командной строке потоковой передачи hadoop.Это возьмет файл, который вы загрузили в HDFS, и поместит в кэш одну его копию локально на каждом узле системы отслеживания задач, а затем создаст программную ссылку на CWD каждой задачи отображения и редуктора.

Существует также опция -archives, если у вас есть банки, которые вы хотите связать с вашей работой.

...