2016-11-28 5 views
0

Сценарий: мне нужно обработать файл (ввод), и для каждой записи мне нужно проверить, соответствуют ли определенные поля входного файла полям, хранящимся в кластере Hadoop.Подключение HIVE в MRJob

Мы думаем об использовании MRJob для обработки входного файла и использования HIVE для получения данных из кластера хаопов. Я хотел бы знать, возможно ли мне подключить HIVE внутри модуля MRJob. Если да, то как это сделать?

Если нет, то какой будет идеальный подход для выполнения моих требований.

Я новичок в Hadoop, MRJob и Hive.

Пожалуйста, предоставьте некоторое предложение.

ответ

0

"соответствует полям, хранящимся в кластере Hadoop". -> Вы имеете в виду, что вам нужно искать, существуют ли поля в этом файле?

О том, сколько файлов в общей сложности требуется для сканирования?

Одним из решений является загрузка каждого отдельного элемента в таблице HBase и для каждой записи во входном файле «GET» запись из таблицы. Если GET успешно, то запись существует в другом месте HDFS, иначе это не так. Вам понадобится уникальный идентификатор для каждой записи HBase, и тот же идентификатор должен существовать и в вашем входном файле.

Вы также можете подключиться к Hive, но схема должна быть жесткой, чтобы все ваши файлы HDFS могли быть загружены в единую таблицу Hive. HBase действительно не заботится о столбцах (требуется только ColumnFamilies). Еще один недостаток с MapReduce и Hive заключается в том, что скорость будет низкой по сравнению с HBase (около реального времени).

Надеюсь, это поможет.

+0

Да. Для примера Мой входной файл что-то вроде этого входного файла: Имя, add1, add2, почтовый индекс, Марк, 31 Maybush, XXX, WF1 5xy мне нужно проверить, является ли значение поля «add1» который является «31 Maybush» для имени «Марк» в входном файле, совпадает с данными в кластере с тем же именем. – user1703319

+0

Будут ли все файлы иметь одну и ту же схему? Если да, то вы можете создать таблицу Hive и загрузить все сотни/тысячи файлов, которые у вас есть, в новую таблицу Hive. Затем вы можете подключиться для запуска запроса куста из MapReduce. Ваш запрос Hive будет выглядеть примерно так: SELECT * FROM huge_hive_table WHERE add1 = '31 Maybush 'AND name =' Mark '; Конечно, вам необходимо динамически изменять 31 Maybush и Mark, поскольку каждая строка входного файла считывается. – AkashNegi

+0

Проблема с вышеуказанным подходом заключается в том, что для каждого запроса в Hive существует задание MR, поэтому задание MR будет выполняться для каждой строки входного файла, поскольку мы сравниваем каждую строку. Если у вас 2000 строк, то 2000 MR заданий для сравнения. – AkashNegi

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

  • Нет связанных вопросов^_^