Python操作Hbase

作者: 不一样的丶我们 | 来源:发表于2018-04-23 18:27 被阅读2122次

Hbase的连接和使用

  • Hbase的连接
    • 安装happybase和thrift
      • pip install happybase
      • pip install thrift
import happybase
conn = happybase.Connection("xxx", 9090)
print conn.tables()

# xxx 表示表名,在连接之前要先在终端创建表
table = conn.table("xxx")

# 创建表---> zhy为表名,info为指定行列为空
conn.create_table('zhy', {"info":{}})

# 删除表--> disable默认为False,删除表的手要修改为True
conn.delete_table("testtest", True)

  • Hbase表结构

    • conn.create_table('zhy', {"info":{}})--->创建表,指定列簇名
      • 数据库中存入数据
        • table.put(rowkey, {"info:content": value})
      • 理解:info是列簇名,info:content中content可以理解为mongo表中的key;插入数据的时候,要指明rowkey,rowkey相当于mongo表中的_id
  • Python操作Hbase的增删改查操作

    • 增改数据put, row操作
    • put(row, data, timestamp=None, wal=True)---> 插入数据,无返回值
      • row---> 行,插入数据的时候需要指定;
      • data---> 数据,dict类型,{key:value}构成,列与值均为str类型
      • timestamp--->时间戳,默认None,即写入当前时间戳
      • wal---> 是否写入wal, 默认为True
    import
    In [8]: conn = happybase.Connection("192.168.14.1",9090)
    In [9]: table = conn.table("zhy")
    # 向表中增添数据,需要制定rowkey和一个字典形式的键值对
    In [11]: table.put("test2",{"info:data":"22222"})
    # 通过指定列簇来检索数据
    In [12]: row = table.row("test2")
    In [13]: print row
    {'info:data': '22222'}
    In [14]: table.put("test3",{"info:data":"33333"})
    In [15]: row = table.row("test3")
    In [16]: print row
    {'info:data': '33333'}
    
    In [20]: table.put("test2",{"info:content":"33333"})
    In [21]: row = table.row("test2")
    In [22]: print row
    {'info:content': '33333', 'info:data': '22222'}
    # 检索多行数据                                        
    In [23]: rows = table.rows(["test2","test3"])
    In [24]: print rows
    [('test2', {'info:content': '33333', 'info:data': '22222'}), ('test3', {'info:data': '33333'})]
    
    
    • 删除操作

      • table.delete("rowkey")---->删除一整行数据
      • table.delete("rowkey", columns=["info:xxx",...])---->删除一个列簇中几个列的数据
    In [27]: table.delete("test3")
    In [28]: row = table.row("test3")
    In [29]: print row
    {}
    
    In [35]: row = table.row("test2")
    In [36]: print row
    {'info:content': '333333', 'info:data': '22222'}
    In [37]: table.delete("test2", columns=["info:content"])
    In [38]: row = table.row("test2")
    In [39]: print row
    {'info:data': '22222'}
    
    
    • 全局查询操作scan()方法

      • 可用于遍历查询表中的数据的数量
      • 可以指定开始和结束的row key来进行局部查询
      • 可以通过制定前缀来进行匹配查询
    for key, value in table.scan():
        print key,value
    
    # 指定row_start和row_stop参数来设置开始和结束扫描的row key    
    for key, value in table.scan(row_start='www.test2.com', row_stop='www.test3.com'):
        print key, value
        
    # 通过row_prefix参数来设置需要扫描的row key
    for key, value in table.scan(row_prefix='www.test'):
        print key, value    
        
    
  • hbase表查询操作特别慢,可以在插入的时候引入特定包,插入时生成一个index表,对index表进行查询操作

    • pip install happybase-monkey
    • 在导入包import happybase下面引入包即可
      • from happybase_monkey.monkey import monkey_path;monkey_path()
  • 其他详细的写法


Linux在hbase的安装

  • 下载安装

  • 解压文件

    • tar -zxvf hbase-1.2.6-bin.tar.gz
  • 启动hbase终端

    • ./hbase-1.2.6/bin/hbase shell
  • 配置hbase的依赖环境JAVA_HOME

    • jdk下载地址

      • 选择对应的版本下载. (如果在linux上下载速度过慢,可以在windos下载之后上传到linux上)
    • 首先在/usr目录下建立java安装目录

      cd /usr

      mkdir java

    • 将下载好的jdk安装包拷贝到java目录下

      cp ./jdk-8u161-linux-x64.tar.gz /usr/java

    • 解压jdk到当前目录,得到文件夹jdk1.8.0_*(注意:下载不同版本的jdk,目录名不同)

      tar -zcvf jdk-8u161-linux-x64.tar.gz

    • 安装完毕之后为它建立一个链接以节省目录长度

      • 这个步骤可以省略,但是在下面指定JAVA_HOME路径的时候要指明全路径

      ln -s /usr/java/jdk1.8.0_161/ /usr/jdk

    • 编译配置文件,配置环境变量

      vim /etc/profile

      • 在文本的末尾添加如下内容
      # 这个路径要和解压缩之后的文件路径一致
      JAVA_HOME=/usr/jdk
      
      CLASSPATH=$JAVA_HOME/lib/
      
      PATH=$PATH:$JAVA_HOME/bin
      
      export PATH JAVA_HOME CLASSPATH
      
      
    • 执行命令让配置生效

      • source /etc/profile
    • 查看安装情况

      java -version

      • 出现如下命令

        java version "1.8.0_161"
        Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
        Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
        
        
  • 启动hbase shell 终端之后Backspace不能使用的问题

    • Options--->Session options--->Emulation--->Terminal 选择为Linux
    • Options--->Session options--->Emulation--->Mappend Keys--->Other mappings打上对勾即可

  • hbase shell 的一些命令操作
    • 通用命令

      序号 命令 描述
      1 status 提供Hbase的状态,例如:服务器的数量
      2 version 提供正在使用的HBase版本
      3 table_help 表引用命令帮助
      4 whoami 提供有关用户的信息
    • Hbase Shell的一些基本操作命令

      名称 命令表达式
      查看存在哪些表 list
      创建表 create '表名', '列簇名1', '列簇名2'
      添加记录 put '表名', 'row key', '列簇名:标识符', 'value'
      查看记录 get '表名', 'row key'
      查看表中的行数 count '表名'
      删除一张表 先要屏蔽表,才能对表进行删除,第一步:disable '表名', 第二步:drop '表名'
      查看表中所有数据 scan '表名称'
      更新记录 就是重写一遍进行覆盖
    • 增删改查操作

      # 创建表,指明列簇 info, data
      create 'user', 'info', 'data'
      create 'user', {NAME=>'info', VERSIONS=>'3'} # 指定版本号
      
      # 向user表中插入信息,rk001为row key,列簇info中添加name标识元素,值为zhy
      put 'user', 'rk001', 'info:name', 'zhy'
      
      # 获取元素,获取user表中row key为rk001的所有元素
      get 'user', 'rk001'
      
      # 获取user表中row key为rk001, info列簇的所有信息
      get 'user', 'rk001', 'info'
      
      # 查询表中所有的信息
      scan 'user'
      
      # 查询表中列簇为info的信息
      scan 'user', {COLUMNS=> 'info'}
      
      # 删除数据
      delete 'user', 'rk001', 'info:name'
      
      # 清空表中数据
      truncate 'user'
      
      # 添加列簇
      alter 'user', NAME=>'f1'
      
      # 删除列簇
      alter 'user', NAME=>'f1', METHOD=>'delete'或alter 'user', 'delete'=>'f1'
      
      
    • 其他详细的hbase操作

相关文章

  • Python操作Hbase

    Hbase的连接和使用 Hbase的连接安装happybase和thriftpip install happyba...

  • python操作hbase

    安装Thrift 安装Thrift的具体操作,请点击链接 pip install thrift安装happybas...

  • Python 操作 HBase 实践

    这几天玩了一下Python,不得不说Python真的很好用,但同时也遇到了很多坑。这里主要分享通过Python的h...

  • HBase学习目录

    Hbase安装Hbase Shell general操作 ddl操作 dml操作 内置过滤器samplehttp:...

  • HBase的Shell

    HBASE Shell的DDL操作 HBASE Shell的DML操作 获取一条记录 更新记录 HBase She...

  • HBase数据操作

    1、 HBase shell操作 在命令行中执行hbase shell就进入了hbase shell操作模式,可以...

  • python使用phoenixdb操作hbase

    接前一篇:使用phoenix查询hbase 今天看看怎样在 python 中使用 phoenixdb 来操作 hb...

  • hbase shell操作(如建表,清空表,增删改查)

    hbase操做 hbase web操作 hbase shell 基本操作: 1)建表 具体命令 2)建表后查看表:...

  • 通过Java 操作Hbase

    通过Java 操作Hbase 一、版本: hbase: 二、操作Hbase: 1、首先定义几个用的到的全局变量: ...

  • Hbase(二) HBase快速入门

    HBase Shell操作 进入 hbase shell 终端进入hbase安装根目录下;输入hbase]$ bi...

网友评论

    本文标题:Python操作Hbase

    本文链接:https://www.haomeiwen.com/subject/bdgllftx.html