happybase连接hbase
1、启动hbase的thrift
#要启动thrift1,端口9090
#可以多启动几个thrift1,让每个程序连接不同的thrift,减轻压力
[root@node1 ~]# hbase-daemon.sh start thrift [root@node1 ~]# jps |grep "ThriftServer" 49654 ThriftServer [root@node1 ~]# netstat -ntlp |grep "9090" tcp6 0 0 :::9090 :::* LISTEN 49654/java
2、python操作脚本
安装happybase 包
pip3 install happybase
#!/usr/bin/env python # encoding: utf-8 """ @author: 'Administrator' @contact: @time: """ import happybase hostname = '192.168.1.100' table_name = 'users' column_family = 'cf' row_key = 'row_1' conn = happybase.Connection(hostname) def pretty_print(msg): print(msg.ljust(80, '*')) def show_tables(): pretty_print('show all tables now') tables = conn.tables() for t in tables: print(t) def create_table(table_name, column_family): pretty_print('create table %s' % table_name) conn.create_table(table_name, {column_family:dict()}) def show_rows(table, row_keys=None): if row_keys: pretty_print('show value of row named %s' % row_keys) if len(row_keys) == 1: print(table.row(row_keys[0])) else: print(table.rows(row_keys)) else: pretty_print('show all row values of table named %s' % table.name) for key, value in table.scan(): print(key, value) def put_row(table, column_family, row_key, value): pretty_print('insert one row to hbase') table.put(row_key, {'%s:name' % column_family:'name_%s' % value}) def put_rows(table, column_family, row_lines=30): pretty_print('insert rows to hbase now') for i in range(row_lines): put_row(table, column_family, 'row_%s' % i, i) def delete_row(table, row_key, column_family=None, keys=None): if keys: pretty_print('delete keys:%s from row_key:%s' % (keys, row_key)) key_list = ['%s:%s' % (column_family, key) for key in keys] table.delete(row_key, key_list) else: pretty_print('delete row(column_family:) from hbase') table.delete(row_key) def counter(table, row_key, column_family): pretty_print('test counter now.') print(table.counter_inc(row_key, '%s:counter' % column_family)) # prints 1 print(table.counter_inc(row_key, '%s:counter' % column_family)) # prints 2 print(table.counter_inc(row_key, '%s:counter' % column_family)) # prints 3 print(table.counter_dec(row_key, '%s:counter' % column_family)) # prints 2 print(table.counter_inc(row_key, '%s:counter' % column_family, value=3)) # prints 5 print(table.counter_get(row_key, '%s:counter' % column_family)) # prints 5 table.counter_set(row_key, '%s:counter' % column_family, 12) print(table.counter_get(row_key, '%s:counter' % column_family)) # prints 5 def delete_table(table_name): pretty_print('delete table %s now.' % table_name) conn.delete_table(table_name, True) def pool(): pretty_print('test pool connection now.') pool = happybase.ConnectionPool(size=3, host=hostname) with pool.connection() as connection: print(connection.tables()) def main(): show_tables() # create_table(table_name, column_family) # show_tables() table = conn.table(table_name) # show_rows(table) # put_rows(table, column_family) show_rows(table) # # # 更新操作 # put_row(table, column_family, row_key, 'xiaoh.me') # show_rows(table, [row_key]) # # # 删除数据 # delete_row(table, row_key) # show_rows(table, [row_key]) # # delete_row(table, row_key, column_family, ['name']) # show_rows(table, [row_key]) # # counter(table, row_key, column_family) # # delete_table(table_name) if __name__ == "__main__": main()