GVKun编程网logo

[bigdata-016] python happybase 操作hbase(python查询hbase)

16

在本文中,您将会了解到关于[bigdata-016]pythonhappybase操作hbase的新资讯,同时我们还将为您解释python查询hbase的相关在本文中,我们将带你探索[bigdata-

在本文中,您将会了解到关于[bigdata-016] python happybase 操作hbase的新资讯,同时我们还将为您解释python查询hbase的相关在本文中,我们将带你探索[bigdata-016] python happybase 操作hbase的奥秘,分析python查询hbase的特点,并给出一些关于02分布式NOSQL HBASE - JAVA API 操作HBase、ArcGIS Python查看geodatabase(.gdb)版本、bigdata-016] python happybase 操作hbase、bigdata——HBase+zookeeper+Hadoop集群构筑 之 Hbase集群构筑的实用技巧。

本文目录一览:

[bigdata-016] python happybase 操作hbase(python查询hbase)

[bigdata-016] python happybase 操作hbase(python查询hbase)

1. 用happybase库 操作 hbase
    http://happybase.readthedocs.io/en/latest/

2. cdh集群的hbase集群有三个节点
    hbase的版本是HBase 1.2.0

3. hbase base的log目录小于5g,导致报警,目录在/var/log/hbase,准备清空它。
   删除不需要的log之后,所有服务都从红色变成黄色,log目录太小导致了大部分问题。log目录的容量必须要足够大。

4. python+happybase
    4.1 pyenv global anacodea3-4.1.1
    4.2 pip install happybase
    4.3 测试安装  python -c ''import happybase'',不报错就是正常的
    4.4 要在bigdata-master上启动thrift server:
        hbase thrift -p 9090 start
    4.5 按照如下文档进行操作:
        http://happybase.readthedocs.io/en/latest/user.html#establishing-a-connection
    4.6 Hbase没有数据类型,所有的row keys,column name,column values都是简单视为raw byte string进行处理
    4.7 删除一条记录,也就是一个row_key对应的所有列族

         deleteall ''testtable'',''event_0''

5. 示例代码

#!/usr/bin/env python3
#! coding:utf-8 -*-


import happybase

#要先在hbase某个节点上开启thrift服务
#hbase thrift -p 9090 start
connection = happybase.Connection(''192.168.0.1'',autoconnect=False)
connection.open()

#print所有的表名
print(''All tables: '',connection.tables(),''\n'')

#操作testtable表
#这个操作是一个提前声明-我要用到这个表了-但不会提交给thrift server做操作
table = connection.table(b''testtable'')

#检索某一行
row = table.row(b''myrow-2'')
print(''a row:'',row,''\n'')

#right
print(row[b''colfam1:q1''])
print(row[b''colfam1:q2''])

#wrong
# print(row[''colfam1:q1''])
# print(row[''colfam1:q2''])

#显示所有列族
print(''所有列族'',table.families(),''\n'')

#输出两列
print(''print two rows:'')
rows = table.rows([b''myrow-1'',b''myrow-2''])
for key,data in rows:
    print(key,data)

#字典输出两列
print(''\n'',''print two dict rows'')
rows_as_dict = dict(table.rows([b''myrow-1'',b''myrow-2'']))
print(rows_as_dict)

#输入row的一个列族所有值
row = table.row(b''myrow-2'',columns=[b''colfam1''])
print(''\n'',''输出一个列族'',row)

#scan操作
print(''\n'',''do scan'')
for key,data in table.scan():
    print(key,data)
6. 测试高表插入记录: 批量插入1000条记录,0.1~0.6s 批量插入1万条记录,1.5~3s 每秒7k条记录,性能比较靠谱 7. 测试宽表插入记录: 批量插入1000条记录,0.1~0.6s 批量插入1万条记录,1.5~3s 每秒7k条记录 高表和宽表性能几乎一样!

02分布式NOSQL HBASE - JAVA API 操作HBase

02分布式NOSQL HBASE - JAVA API 操作HBase



(原文地址:http://www.jb51.cc/cata/500599,转载麻烦带上原文地址。hadoop hive hbasemahout storm spark kafka flume,等连载中,做个爱分享的人


HBase,可以使用shell界面管理数据,也提供java api 来操作Hbase上的表的数据。所有Column均以二进制格式存储,所以在api中要不断的类型转换。

//1 准备HBase上下文 HBaseAdmin 和user表对象hTable
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.rootdir","hdfs://rdc:9000/HRoot");
conf.set("hbase.zookeeper.quorum","p1");
Configuration conf= HBaseConfiguration.create();
HConnection conn= HConnectionManager.createConnection(conf);
HTableInterface userTable = conn.getTable("user");

//2查->Get,HBase只能根据ROW KEY 做随机查。默认是没有二级索引的。相当于只能 SELECT u.name FROM user u where u.id = 2; 不能对非主键的查询 SELECT u.name FROM user u where u.name = "rdc";
String id = "1"; //row key行键
String columnFamily = "info"; //列镞
String colume = "name"; //列名
Get get = new Get(id.getBytes());
final Result result = hTable.get(get);
byte[] valBytes = result.getValue(columnFamily .getBytes(),colume getBytes());
String value = new String(value); // value 相当于sql语句 SELECT u.name FROM user u where u.id = 1,的结果

//2增->Put ,使用Put 一列一列的加。sql: insert into user(name) values("mosi")
//3改->Put ,使用Put 一列一列的改。sql:update user set name "mosi"
Put put = new Put(id.getBytes());
put.add(columnFamily .getBytes(), colume getBytes(),"mosi".getBytes());
hTable.put(put);//和java的map一样。为空新增,不为空覆盖。

//4删 -》sql: delete from user where id = 1
Delete delete = new Delete(id.getBytes());
hTable.delete(delete);
//5 扫描,HBASE还提供scan方式根据rowkey范围扫描,不指定rowkey范围,则为全表扫描 。一次网络连接获取 批量数据缓存在客户端内存中。相对应GET来说。节省网络的连接次数。
// sql: SELECT * FROM user u
Scan scan = new Scan();
final ResultScanner scanner = hTable.getScanner(scan);
for (Result result : scanner) {
final byte[] value = result.getValue(columnFamily .getBytes(),colume.getBytes());
}



ArcGIS Python查看geodatabase(.gdb)版本

ArcGIS Python查看geodatabase(.gdb)版本

代码:10.0不能运行

import arcpy

desc = arcpy.Describe(r''C:\Users\dell\Documents\ArcGIS\default.gdb'')
print desc.release
地理数据库版本值 ArcGIS 版本

2.2.0

9.2

2.3.0

9.3、9.3.1

3.0.0

10.0、10.1、10.2、10.2.1、10.2.2、10.3、10.3.1、10.4、10.4.1、10.5、10.5.1

ArcGIS Pro 1.0、1.1、1.2、1.3、1.4

bigdata-016] python happybase 操作hbase

bigdata-016] python happybase 操作hbase

1. 用happybase库 操作 hbase
    http://happybase.readthedocs.io/en/latest/

2. cdh集群的hbase集群有三个节点
    hbase的版本是HBase 1.2.0

3. hbase base的log目录小于5g,导致报警,目录在/var/log/hbase,准备清空它。
   删除不需要的log之后,所有服务都从红色变成黄色,log目录太小导致了大部分问题。log目录的容量必须要足够大。

4. python+happybase
    4.1 pyenv global anacodea3-4.1.1
    4.2 pip install happybase
    4.3 测试安装  python -c ''import happybase'',不报错就是正常的
    4.4 要在bigdata-master上启动thrift server:
        hbase thrift -p 9090 start
    4.5 按照如下文档进行操作:
        http://happybase.readthedocs.io/en/latest/user.html#establishing-a-connection
    4.6 Hbase没有数据类型,所有的row keys,column name,column values都是简单视为raw byte string进行处理
    4.7 删除一条记录,也就是一个row_key对应的所有列族

         deleteall ''testtable'',''event_0''

5. 示例代码

#!/usr/bin/env python3
#! coding:utf-8 -*-


import happybase

#要先在hbase某个节点上开启thrift服务
#hbase thrift -p 9090 start
connection = happybase.Connection(''192.168.0.1'',autoconnect=False)
connection.open()

#print所有的表名
print(''All tables: '',connection.tables(),''\n'')

#操作testtable表
#这个操作是一个提前声明-我要用到这个表了-但不会提交给thrift server做操作
table = connection.table(b''testtable'')

#检索某一行
row = table.row(b''myrow-2'')
print(''a row:'',row,''\n'')

#right
print(row[b''colfam1:q1''])
print(row[b''colfam1:q2''])

#wrong
# print(row[''colfam1:q1''])
# print(row[''colfam1:q2''])

#显示所有列族
print(''所有列族'',table.families(),''\n'')

#输出两列
print(''print two rows:'')
rows = table.rows([b''myrow-1'',b''myrow-2''])
for key,data in rows:
    print(key,data)

#字典输出两列
print(''\n'',''print two dict rows'')
rows_as_dict = dict(table.rows([b''myrow-1'',b''myrow-2'']))
print(rows_as_dict)

#输入row的一个列族所有值
row = table.row(b''myrow-2'',columns=[b''colfam1''])
print(''\n'',''输出一个列族'',row)

#scan操作
print(''\n'',''do scan'')
for key,data in table.scan():
    print(key,data)
6. 测试高表插入记录: 批量插入1000条记录,0.1~0.6s 批量插入1万条记录,1.5~3s 每秒7k条记录,性能比较靠谱 7. 测试宽表插入记录: 批量插入1000条记录,0.1~0.6s 批量插入1万条记录,1.5~3s 每秒7k条记录 高表和宽表性能几乎一样!

bigdata——HBase+zookeeper+Hadoop集群构筑 之 Hbase集群构筑

bigdata——HBase+zookeeper+Hadoop集群构筑 之 Hbase集群构筑

整体流程

  • 物件下载
  • 解压
  • conf文件配置
  • 启动&停止
  • 状态确认

物件下载

     参考hbase官网

解压

   tar -zxvf hbase-***.gz

conf文件配置

1.hbase-env.sh

export JAVA_HOME=/usr/java/jdk1.7.0_67
export HBASE_MANAGES_ZK=false

注意:JDK根据自己的环境配置

            此处没有使用hbase自带的zookeeper服务,因为之前已经搭建好了zookeeper集群环境。

2.hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://sv004:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>sv004,sv001,sv002,sv003</value>
     </property>
     <property>
        <name>dfs.replication</name>
        <value>3</value> 
     </property>
</configuration>

3.配置regionservers

追加如下信息:

sv001
sv002
sv003

以上是单个虚拟机中hbase的配置,集群的话需要将其复制到其他节点

命令如下所示:

  scp -r $HBASE_HOME root@sv001:/home/project-test
  scp -r $HBASE_HOME root@sv002:/home/project-test
  scp -r $HBASE_HOME root@sv003:/home/project-test

重要,前方高能

  1. hbase.rootdir里指定的socket号一定要跟hadoop中指定的一直。hbase.rootdir默认的端口号是8020.
  2. hbase其他设置参数要追加的话,可以参好官方文档,一般的设置都是在hbase-site.xml中追加
  3. hbase集群启动的顺序:hadoop -> zookeeper ->hbase

启动&停止

${HBASE_HOME}/start-hbase.sh

${HBASE_HOME}/stop-hbase.sh

状态确认

使用jps命令,具体信息如下所示:

①sv004:HMaster ②SV001/SV002/SV003:HRegionSever

今天关于[bigdata-016] python happybase 操作hbasepython查询hbase的讲解已经结束,谢谢您的阅读,如果想了解更多关于02分布式NOSQL HBASE - JAVA API 操作HBase、ArcGIS Python查看geodatabase(.gdb)版本、bigdata-016] python happybase 操作hbase、bigdata——HBase+zookeeper+Hadoop集群构筑 之 Hbase集群构筑的相关知识,请在本站搜索。

本文标签: