首页 > 其他分享 >HBase CRUD client

HBase CRUD client

时间:2023-07-11 22:11:39浏览次数:33  
标签:name self CRUD connection client table HBase hbase pool

# requirement.txt
happybase==1.2.0
"""
hbase.py
"""

# -*- coding: utf-8 -*-

import happybase

from config.hbase_config import HAPPYBASE_HBASE
# HAPPYBASE_HBASE = {
#    "host": "xxx.xxx.xxx.xxx",
#    "port": ???,
#    "size": ?,
# }

from tasks.common_constant import log

hbase_pool = happybase.ConnectionPool(**HAPPYBASE_HBASE)


class HbaseCURD():

    def __init__(self, hbase_config=None, hbase_pool=None):
        self.hbase_config = hbase_config
        if self.hbase_config is not None:
            self.hbase_pool = happybase.ConnectionPool(**hbase_config)
        elif hbase_pool is not None:
            self.hbase_pool = hbase_pool
        else:
            raise Exception('HbaseCURD init error')

    def save_to_hbase(self, table_name, data, batch_size=5000, timeout=120):
        with self.hbase_pool.connection(timeout) as connection:
            if table_name.encode() in connection.tables():
                table = connection.table(table_name)
                with table.batch(batch_size=batch_size) as bat:
                    for row_key, kv_pairs in data.items():
                        bat.put(row_key, kv_pairs)
            else:
                log.error('save to hbsae fail, hbase table %s not exist' % table_name)

    def create_hbase_table(self, table_name, families=None):
        with self.hbase_pool.connection() as connection:
            if table_name.encode() not in connection.tables():
                if families is None:
                    families = {'families': dict(max_versions=1)}
                connection.create_table(table_name, families=families)
            else:
                log.warning('hbase table %s exist, create table fail' % table_name)

    def delete_hbase_table(self, table_name):
        with self.hbase_pool.connection() as connection:
            if table_name.encode() in connection.tables():
                connection.delete_table(table_name, disable=True)
            else:
                log.warning('hbase table %s not exist, delete table fail' % table_name)

    def scan(self, table_name, columns=None, filter=None, limit=None, batch_size=5000, timeout=120):
        with self.hbase_pool.connection(timeout) as connection:
            if table_name.encode() in connection.tables():
                table = connection.table(table_name)
                return table.scan(columns=columns, filter=filter, batch_size=batch_size, limit=limit)
            else:
                log.warning('hbase table %s not exist, get data fail' % table_name)

标签:name,self,CRUD,connection,client,table,HBase,hbase,pool
From: https://www.cnblogs.com/LexLuc/p/17546088.html

相关文章

  • SignalR 外部调用自定义Hub类的方法,Clients为null
    这是因为外部调用的类的对象和你连接的Hub类的对象,这两个对象不!一!样!解决方法在自定义的Hub类中,注入IHubContext对象,然后在方法中调用IHubContext对象来向前端推送数据publicclassDataHub:AbpCommonHub,ITransientDependency{publicIOnlineClientManag......
  • InnoDB自增原理都搞不清楚,还怎么CRUD?
    虽然我们习惯于给主键ID指定AUTO_INCREMENT属性,但是AUTO_INCREMENT也是可以指定到非主键字段的,唯一的约束就是这个字段上面得加索引,有了索引,就可以通过类似SELECTMAX(*ai_col*)的语句快速读到这列数据的最大值。本文要探讨的话题是MySql的InnoDB引擎处理自增数据列的原理MySql5.1......
  • rtmp的拉流方式之ZLMRTCClient
    关于直播流rtmp的拉流因为延迟少比较好用(因为手机不支持flash,所以不支持手机浏览器)zlmrtcclient是老式插件,在vue项目中使用的话需要在index.html里面进行引入,然后在项目中使用  标签代码<videoid='video1'class="jswebrtc"autoplaymuted="true"width="100%"height......
  • VMware vSphere client创建虚拟机
    【资源池】上右键选择【新建虚拟机】选择存储时,选择剩余大的那个服务器选择操作系统新的CD/DVD驱动器——数据存储ISO文件选择后出现的页面选择好操作系统之后,需要点击已连接。要不会找不到操作系统确认自己的配置,点击完成......
  • C# httpclient获取cookies实现模拟web登录
    目前在公司做一款平台化的产品,我主要负责PC端上的开发,在产品推荐过程中为了节省开发时间很多功能模块没来得及做原生,用CEF嵌入了很多带功能web页面,与客户端进行交互从而实现功能。在二期开发中,产品需求说明书中需要把登录功能放在客户端来做,这当中涉及到一个问题客户端做登入登出......
  • 通用的CRUD之MongoDB
    前言这是一个简便的,对MongoDB增删改查,无需提前建库,建表,安装就能快速上手使用。MongoDB多条件查询需要JSON的多层嵌套如{DDATE:{$gte:{$date:'2023-06-05T13:41'},$lte:{$date:'2023-06-05T23:59'}},Qty:{$gt:10}},书写时非常难受,还容易出错。本类库支持类SQL查询语法,如"DDATE>......
  • 华为超算平台git、cmake、wget、curl报错:SSLv3_client_method version OPENSSL_1_1_0
    最近在使用超算平台时报错,不管是git、cmake、wget、curl中的哪个都报错,大致错误: /usr/bin/cmake3:relocationerror:/usr/lib64/libcurl.so.4:symbolSSLv3_client_methodversionOPENSSL_1_1_0notdefinedinfilelibssl.so.1.1withlinktimereference  参考网......
  • HBase 分布式部署(进阶中级)
    1.HBase分布式部署(进阶中级)1.实验任务一:部署前期准备1.1.步骤一:安装部署hadoopha分布式环境1.2.步骤二:解压安装文件[root@master~]#cd[root@master~]#lsanaconda-ks.cfgjdk-8u152-linux-x64.tar.gzhadoop-2.7.1.tar.gzzookeeper-3.4.8.tar.gzhb......
  • HBase 组件安装与配置
    HBase组件安装与配置1.1.实验目的完成本实验,您应该能够:掌握HBase安装与配置掌握HBase常用Shell命令1.2.实验要求了解HBase原理熟悉HBase常用Shell命令1.3.实验环境本实验所需之主要资源环境如表1-1所示。表1-1资源环境服务器集群单节点,机器最......
  • TcpClient
    publicclassTcpClient{publiceventAction<byte[]>OnReveive=delegate{};privateManualResetEventsendDone=newManualResetEvent(false);privateManualResetEventreceiveDone=newManualResetEvent(false);///<summary>......