Пропустить скрипты Python для mapreduce для HBase

У нас есть реализация HBase над Hadoop. На данный момент все наши задания Map-Reduce записываются как классы Java. Мне интересно, есть ли хороший способ использовать скрипты Python для перехода к HBase для Map-Reduce.

3
nl ja de
@frb Знаете ли вы, что кто-то успешно использовал класс Jython в качестве Map-Reducer и передал его в HBase?
добавлено автор Sid, источник
Если вы еще не посмотрели на него, посмотрите на jython . Это позволяет хорошо интегрировать Java и Python.
добавлено автор Fredrick Brennan, источник

2 ответы

Существует хорошая библиотека с открытым исходным кодом, которую вы можете использовать для этой цели. Он называется HappyBase и доступен здесь . Он использует Thrift API для подключения HBase.

Вот пример некоторых простых операций HBase, выполненных с помощью HappyBase:

import happybase

connection = happybase.Connection('localhost')
table = connection.table('my-table')

table.put('row-key', {'family:qual1': 'value1','family:qual2': 'value2'})
row = table.row('row-key')print row['family:qual1']  
# prints 'value1'
for key, data in table.rows(['row-key-1', 'row-key-2']):    
    print key, data  # prints row key and data for each row
for key, data in table.scan(row_prefix='row'):    
    print key, data  # prints 'value1' and 'value2'
row = table.delete('row-key')

Поэтому, если вы хотите запустить задание Map/Reduce с помощью Python для доступа к HBase, вы можете сделать следующее:

  1. Установите HappyBase на все ваши datanodes.
  2. Используйте потоковое Python как подробное в разделе потоковой передачи , чтобы запустить задание в кластере.
4
добавлено
HBase по существу использует HDFS в качестве хранилища. Можете ли вы поделиться более подробной информацией о том, что делает ваша работа? Я предполагаю, что вы делаете некоторые поиски и/или записи в HBase, и в этом случае вы могли бы использовать клиент HBase, такой как тот, который я показал выше, чтобы сделать это в вашей задаче MR (обратите внимание, что HappyBase использует шлюз Thrift, а не REST one ).
добавлено автор Charles Menguy, источник
Можете ли вы добавить к своему вопросу пример кода из задания Java M/R и как его запустить? Возможно, я неправильно понял ваш вопрос, но сейчас мне не ясно, что именно вы хотели бы достичь.
добавлено автор Charles Menguy, источник
Если вы хотите написать mapper и редуктор в Python, то я не понимаю, почему вы не можете использовать потоковое Python с клиентом HBase, например, с помощью happybase или что-то еще? Вот хороший пример для написания mappers и редукторов в Python: michael-noll.com/tutorials/…
добавлено автор Charles Menguy, источник
Благодарю. AFAIK Hadoop потоковая передача не работает для HBase. Он работает для простой ванильной HDFS. Наши данные хранятся через HBase. Поправьте меня если я ошибаюсь.
добавлено автор Sid, источник
Наши работы MR делают такие вещи, как взвешенная средняя. расчеты. Я понимаю, что я могу использовать HappyBase в качестве клиента для GETS/PUTS, но я хочу знать, смогу ли я написать MR-задание исключительно на Python и передать его HBase - поскольку HBase ожидает Java-классы. Я не понимаю, что вы подразумеваете под «... сделайте это в своей работе MR ...». Моя работа MR находится в Java, как я буду вставлять в нее Python?
добавлено автор Sid, источник
Я просто хочу написать mapper и редуктор в Python вместо Java.
добавлено автор Sid, источник
И я использую org.apache.hadoop.mapreduce.Job; класс для создания задания MR
добавлено автор Sid, источник
+1 для предложения happybase + streaming. Я сделаю это. Благодарю.
добавлено автор Sid, источник
Я использую +1 для использования карты HappyBase +. Во-первых, это будет забивать ваши бережливые шлюзы, так как все узлы кластера начинают извлекать блоки HBase. Если у вас есть небольшое количество шлюзов, то вы, вероятно, будете делать множественные передачи данных по всем узлам, чтобы даже получить обработку данных (от территориального сервера до шлюза до преобразователя к редуктору). Даже если каждый узел кластера запускает бережливый шлюз, а картограф подключается к локальному, вы все равно теряете всю локальность данных.
добавлено автор DumpsterDoofus, источник

Вы можете очень легко выполнить преобразование карт с помощью Python, которое будет взаимодействовать с бережливым сервером. Клиент Hbase в python будет привлекательным клиентом.

1
добавлено
Jitendra: добро пожаловать в SO! Подумайте о добавлении ссылки на ваш ответ, показывающий, как использовать скрипты Python с HBase вместо того, чтобы просто утверждать, что это возможно.
добавлено автор Simon Whitaker, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community