Могу ли я использовать библиотеку mrjob python для секционированных таблиц кустов?

У меня есть пользовательский доступ к серверу/кластеру hadoop, содержащему данные, которые хранятся исключительно в секционированных таблицах/файлах в улье (avro). Мне было интересно, могу ли я выполнить mapreduce с помощью python mrjob для этих таблиц? До сих пор я тестировал mrjob локально на текстовых файлах, хранящихся на CDH5, и был впечатлен простотой разработки.

После некоторых исследований я обнаружил, что есть библиотека под названием HCatalog, но, насколько я знаю, она недоступна для python (только для Java). К сожалению, у меня не так много времени на изучение Java, и я хотел бы придерживаться Python.

Знаете ли вы какой-либо способ запустить mrjob для данных, хранящихся в улье?

Если это невозможно, есть ли способ передать код mapreduce, написанный на Python, в куст? (Я бы предпочел не загружать файлы python mapreduce в улей)


person Tomasz Sosiński    schedule 17.09.2014    source источник
comment
Mr.Job в настоящее время не работает с файлами Avro. Если вы хотите использовать Mr.Job, вы можете сначала де-авро данные. У Майкла Нолла есть хороший пост в блоге об инструментах Avro: michael-noll.com/blog/2013/03/17/   -  person Alex Woolford    schedule 14.10.2014


Ответы (1)


Как заявил Алекс, в настоящее время Mr.Job не работает с файлами в формате avro. Тем не менее, есть способ напрямую выполнять код Python в таблицах кустов (Mr.Job не требуется, к сожалению, с потерей гибкости). В конце концов мне удалось добавить файл python в качестве ресурса в куст, выполнив «ADD FILE mapper.py» и выполнив предложение SELECT с TRANSFORM... USING...., сохранив результаты сопоставления в отдельной таблице. Пример запроса Hive:

INSERT OVERWRITE TABLE u_data_new SELECT TRANSFORM (userid, movieid, rating, unixtime) USING 'python weekday_mapper.py' AS (userid, movieid, rating, weekday) FROM u_data;

Полный пример доступен здесь (внизу): ссылка

person Tomasz Sosiński    schedule 15.10.2014