将mapreduce的Python脚本传递给HBase

Sid*_*Sid 3 python hadoop hbase mapreduce

我们在Hadoop上实现了HBase.截至目前,我们所有的Map-Reduce作业都是作为Java类编写的.我想知道是否有一种很好的方法可以使用Python脚本传递给HBase进行Map-Reduce.

Cha*_*guy 5

有一个很好的开源库可以用于此目的.它在这里被称为HappyBase可用.它使用Thrift API for HBase进行连接.

以下是使用HappyBase完成的一些简单HBase操作的示例:

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')
Run Code Online (Sandbox Code Playgroud)

因此,如果您想使用Python运行Map/Reduce作业来访问HBase,您可以做的是:

  1. 在所有datanode上安装HappyBase.
  2. 使用流式传输部分中详细介绍的Python流,以在群集上运行您的作业.

  • 我是-1使用HappyBase + map/reduce.首先,当所有集群节点开始检索HBase块时,这将打击您的thrift网关.如果您有少量的thrift网关,那么您可能会在主机之间进行多次数据传输,甚至可以处理数据(从regionserver到网关到mapper到reducer).即使每个群集节点都运行一个thrift网关并且映射器连接到本地节点,您仍然会丢失所有数据位置. (3认同)