微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python-happybase操作Hbase

通过happybase 操作hbase,在此只是使用了一些常规,简单的操作;

详细自行查看官方文档http://happybase.readthedocs.io/en/latest/】

# coding: utf-8
import happybase
from pprint import pprint

'''
pip install happybase
time: 08/05/2018
操作hbase
在hbase/bin执行:
    hbase-daemon.sh start thrift
'''


class HappyHbase(object):
    """
     :param str name:table name
     :param str row: the row key
     :param list_or_tuple columns: list of columns (optional)
    """

    def __init__(self,host,port=9090):
        self.conn = happybase.Connection(host, port=port, autoconnect=False)
        self.conn.open()

    def list_tables(self):
        tabels = self.conn.tables()
        return tabels

    def table(self, name):
        table = self.conn.table(name)
        return table

    def creat(self, name, kw):
        """
        :param name: str
        :param kw: dict
        exp:
            kw = {"":dict()}
        :return: None
        """
        self.conn.create_table(name, kw)

    def delete(self, name, row):
        table = self.table(name)
        table.delete(row)

    def delete_column(self, name, row, columns):
        self.table(name).delete(row, columns=columns)

    def drop(self, name):
        self.conn.disable_table(name)
        self.conn.delete_table(name)

    def cell(self, name, row, column):
        """
        :return: list
        """
        return self.table(name).cells(row, column)

    def families(self, name):
        """
        :return: dict
        """
        return self.conn.table(name).families()

    def put(self, name, row, kw):
        self.table(name).put(row, kw)

    def get(self, name, row):
        """
        :return: dict
        """
        return self.table(name).row(row)

    def get_column(self, name, row, columns):
        """
        :return: dict
        """
        return self.table(name).row(row, columns)

    def scan(self, name):
        nu = hap.conn.table(name).scan()
        for i in nu:
            print i

    def incr(self, name, row, column):
        self.table(name).counter_inc(row, column=column)

    def dec(self, name, row, column):
        self.table(name).counter_dec(row, column=column)

    def close(self):
        self.conn.close()


if __name__ == '__main__':
    hap = HappyHbase(host='',port=9090)
    d = {
        "user": dict(),
        "info": dict(),
    }
    hap.creat('test_1', d)
    table_name = "test_1"
    date = {
        "user:": "xiaoming",
        "info:address": "bj",
        "info:sex": "F",
    }
    for i in range(3):
        hap.put(table_name, str(i), date)

    hap.delete_column(table_name, "1", columns=['info:sex'])
    print hap.get_column(table_name, "1", columns=["info"])
    print hap.cell(table_name, '1', "info:sex")
    hap.scan(table_name)
    hap.close()

批处理:

官方的例子:

b = table(name).batch()
b.put(b'row-key-1', {b'cf:col1': b'value1', b'cf:col2': b'value2'})
b.put(b'row-key-2', {b'cf:col2': b'value2', b'cf:col3': b'value3'})
b.put(b'row-key-3', {b'cf:col3': b'value3', b'cf:col4': b'value4'})
b.delete(b'row-key-4')
b.send()

OR


with table.batch() as b:
b.put(b'row-key-1', {b'cf:col1': b'value1', b'cf:col2': b'value2'})
b.put(b'row-key-2', {b'cf:col2': b'value2', b'cf:col3': b'value3'})
b.put(b'row-key-3', {b'cf:col3': b'value3', b'cf:col4': b'value4'})
b.delete(b'row-key-4')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐