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操作脚本

#!/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()

猜你喜欢

转载自www.cnblogs.com/weiyiming007/p/12206407.html
今日推荐