HBase 学习(一) Python操作Hbase

摘要:
获取表实例:table=happy base。Table#happy base Table:Get Table instance name:Table name connection:connect to Get cells cells#获取单元格数据并返回列表row:row column:column versions:获取最大版本数。默认值为None,即获取所有时间戳:timestamps。默认值为None,即获取所有时间戳版本数据。

一,前言

二,包安装

三,表操作DDL

四,数据操作DML

正文

一,前言

  上节讲到我们可以用JavaAPI进行Hbase的操作,但是很明显,Java的API很底层,用起来会很不方便,如果你们学习过Python,可以用Python来对Hbase进行操作。

  happybase使用:https://happybase.readthedocs.io/en/latest/user.html#establishing-a-connection

二,包安装

  安装thrift:https://blog.csdn.net/y472360651/article/details/79050571

  安装happybase

pip install happybase

三,表操作DDL

  创建连接:

connection = happybase.Connection('somehost')  #链接,端口默认是9090   hbase thrift 启动的默认端口也是9090

  列出所有表:

table_name_list = connection.tables()  # connection.tables():获取Hbase实例中的表名列表,返回一个list

  获取表:

table = connection.table(name,user_prefix=True)     # connection.table(name,user_prefix=True):获取一个表对象,返回一个happybase.Table对象:
  • name:表名
  • user_prefix:是否使用表前缀,默认为True

  禁用表:在做一些删除操作之前必须先禁用表

connection.disable_table(name) #disable_table(name):禁用表,无返回值
  • name:表名

  启用表:

connection.enable_table(name) # enable_table(name):启用表,无返回值
  • name:表名

  创建表:

families = {
    "cf":dict(),
    "df":dict()
}
connection.create_table(name,families)      # 如果连接时,有传递表前缀参数时,真实表名将会是:"{}_{}".format(table_prefix,name)
  • name:表名
  • families:列族

  删除表:

connection.delete_table(name,disable=False) #delete_table(name,disable=False):删除表,无返回值  默认是false,若要删除改为true
  • name:表名
  • disable:是否先禁用表

四,数据操作DML

  若要对表进行数据插入等操作,需要先获取表实例。

  获取表实例:

table = happybase.Table(name,connection) #happybase.Table(name,connection):获取表实例
  • name:表名
  • connection:连接

  获取单元格cells

cells(row, column, versions=None, timestamp=None, include_timestamp=False)  # 获取单元格数据,返回一个list
  • row:行
  • column:列
  • versions:获取的最大版本数量,默认None,即获取所有
  • timestamp:时间戳,默认None,即获取所有时间戳版本的数据。可指定一个时间戳,获取小于此时间戳版本的所有数据
  • include_timestamp:是否返回时间戳,默认False

  实例:

content = table.cells('row1','cf:1',5,timestamp=1514861929124,include_timestamp=True)
print content   # [('1', 1514861925674L)]

  删除指定行数据:

delete(row, columns=None, timestamp=None, wal=True):删除指定行数据,无返回值
  • row:行
  • columns:列,默认为None,即删除所有列,可传入一个list或tuple来指定删除列
  • timestamp:时间戳,默认为None,即删除所有,可传入一个时间戳来删除小于等于此时间戳的所有数据
  • wal:是否写入wal,默认为True

  实例:

table.delete(row, columns=None, timestamp=None, wal=True)

  插入数据:

put(row, data, timestamp=None, wal=True):插入数据,无返回值
  • row: 行
  • data: 数据,dict类型,{列:值}构成,列与值皆为str类型
  • timestamp:时间戳,默认None,即写入当前时间戳
  • wal:是否写入wal,默认为True

  实例:

# 在row1行,cf:1列插入值1
table.put("row1",{"cf:1":"1"})

  获取一行数据:

row(row, columns=None, timestamp=None, include_timestamp=False):获取一行数据,返回一个dict
  • row:行
  • columns: 列,默认为None,即获取所有列,可传入一个list或tuple来指定获取列
  • timestamp:时间戳。默认为None,即返回最大的那个时间戳的数据。可传入一个时间戳来获取小于此时间戳的最大时间戳的版本数据
  • include_timestamp:是否返回时间戳数据,默认为False

  实例:

info = table.row(row, columns=None, timestamp=None, include_timestamp=False)

  获取多行数据:

rows(rows, columns=None, timestamp=None, include_timestamp=False):获取多行数据,返回一个list
  • rows:行,可传入一个list或tuple来指定获取
  • columns: 列,默认为None,即获取所有列,可传入一个list或tuple来指定获取列
  • timestamp:时间戳。默认为None,即返回最大的那个时间戳的数据。可传入一个时间戳来获取小于此时间戳的最大时间戳的版本数据
  • include_timestamp:是否返回时间戳数据,默认为False

  实例:

info = table.rows(rows, columns=None, timestamp=None, include_timestamp=False)

  获取扫描器:

scan(row_start=None, row_stop=None, row_prefix=None, columns=None, filter=None,
timestamp=None, include_timestamp=False, batch_size=1000, scan_batching=None, limit=None, sorted_columns=False, reverse=False):获取一个扫描器,返回一个generator
  • row_start:起始行,默认None,即第一行,可传入行号指定从哪一行开始
  • row_stop:结束行,默认None,即最后一行,可传入行号指定到哪一行结束(不获取此行数据)
  • row_prefix:行号前缀,默认为None,即不指定前缀扫描,可传入前缀来扫描符合此前缀的行
  • columns:列,默认为None,即获取所有列,可传入一个list或tuple来指定获取列
  • filter:过滤字符串
  • timestamp:时间戳。默认为None,即返回最大的那个时间戳的数据。可传入一个时间戳来获取小于此时间戳的最大时间戳的版本数据
  • include_timestamp:是否返回时间戳数据,默认为False
  • batch_size:用于检索结果的批量大小
  • scan_batching:服务端扫描批处理
  • limit:数量
  • sorted_columns:是否返回排序的列(根据行名称排序)
  • reverse:是否执行反向扫描

  实例:

scanner = table.scan(row_start=None, row_stop=None, row_prefix=None,
columns=None, filter=None, timestamp=None, include_timestamp=False, batch_size=1000, scan_batching=None, limit=None, sorted_columns=False, reverse=False)

免责声明:文章转载自《HBase 学习(一) Python操作Hbase》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇STM32学习笔记(八) SPI总线(操作外部flash)小米开源便签Notes-源码研究(1)-导出功能整体思路下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

像Excel一样使用python进行数据分析(3)

像Excel一样使用python进行数据分析(1) 像Excel一样使用python进行数据分析(2) 7,数据汇总 第七部分是对数据进行分类汇总,Excel中使用分类汇总和数据透视可以按特定维度对数据进行汇总,python中使用的主要函数是groupby和pivot_table。下面分别介绍这两个函数的使用方法。 分类汇总 Excel的数据目录下提供了“...

C# 时间戳与DateTime互转,使用 DateTimeOffset

/// <summary> /// 时间戳与DateTime互转 /// </summary> public class TicksTimeConvert { /* * 时间戳10位的是秒,13位的是毫秒 * * 1秒=1...

Python系列:二、数据类型--技术流ken

标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 的六个标准数据类型中: 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(...

hbase1.3.1安装

下载:    hadoop@master:~$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz解压到/opt/Hadoop,    hadoop@master:~$ sudo tar -zxvf hbase-1.3.1-bin.tar.g...

Python—模块

Python—模块 一、模块模块,是用一堆代码实现了某个功能的代码集合,模块分为三种:自定义模块(自己定义)、内置模块(python自带)、开源模块导入模块(1)、导入一个py文件,解释器解释该py文件(2)、导入一个包,解释器解释该包下的 __init__.py 文件 #模块导入import modulefrom module.xx import xxf...

【前端开发】基于vue的树形结构table拖拽排序教程

安装依赖drag-tree-table(更多文档见github) yarn add drag-tree-table html <dragTreeTable ref="table" :data="treeData" @drag="onTreeDataChange" onl...