一、前言

关于jython介绍,直接上官网www.jython.org,可以得到详细资料,这里只介绍一下jython操作hbase的一些方法,本质上和用java操作hbase差不多,只不过语法换成了python

二、环境

hbase版本:0.98.6.1

hadoop版本: 2.5.2

jython版本:2.7

三、jython安装配置

1 安装

关于hbase&hadoop的安装配置这里也不介绍,主要介绍一下jython的安装配置,其实安装很简单,就执行一条命令就OK

java -jar jython-installer-2.7..jar -d /data/jython27

-d: 指定jython安装目录

2 配置

涉及Jython的配置,主要有三个方面:hbase classpath, 系统环境变量(方便操作)和hbase classpath(让jython可以找到hbase的lib)

1) hbase classpath设置

需要在hbase-env.sh中配置如下等环境变量:

export JAVA_HOME=/data/jdk1.7.0_51
export HADOOP_HOME=/data/hadoop
export HBASE_HOME=/data/hbase
export HADOOP_CONF_DIR=/data/hadoop/etc/hadoop
export HBASE_CONF_DIR=/data/hbase/conf export ZOOCFGDIR=/data/zookeeper-3.4.6/conf
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export HADOOP_CLASSPATH=.:$HBASE_HOME/*:$HBASE_CONF_DIR:$HADOOP_CLASSPATH
export HBASE_CLASSPATH=$HBASE_CONF_DIR:$ZOOCFGDIR

2) jython系统环境变量设置如下

在/etc/bashrc, 或 ~/.bashrc, 或~/.bash_profile 文件中添加如下行

export JYTHON_HOME=/data/jython27
export JYTHON_BIN=$JYTHON_HOME/bin
export PATH=$JYTHON_BIN:$PATH

3) jython classpath设置

如果此步不设置,启动jython脚本时,会提示找不到hbase相关模块的错误,所以需要在jython启动脚本文件中添加hbase  classpath,即 编辑jython目录bin下的jython, 在相应位置添加如下内容:

if [ ! -z "$CLASSPATH" ];then
CLASSPATH=$CLASSPATH:/data/hbase/lib/*
CP=$CP:$CLASSPATH
fi

  备注:添加位置在CP=$JYTHON_HOME/jython.jar下方,如下图所示

四、jython操作hbase脚本

此脚本主要是创建Hbase表,并设置相关参数

import java.lang
import java.util from org.apache.hadoop.hbase.client import HBaseAdmin,HTable,Put,Get
from org.apache.hadoop.hbase import HRegionInfo,ServerName
from org.apache.hadoop.hbase.catalog import MetaReader,CatalogTracker
from org.apache.hadoop.hbase import HBaseConfiguration, HTableDescriptor, HColumnDescriptor, HConstants
from org.apache.hadoop.hbase.util import Bytes,Writables
from org.apache.hadoop.hbase.io.compress import Compression
from org.apache.hadoop.hbase.regionserver import BloomType
from org.apache.hadoop.hbase.io.encoding import DataBlockEncoding #global variable
conf,admin=None,None class CreateTable(object):
def __init__(self,conf,admin):
self.base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),os.pardir))
self.conf = conf
self.admin = admin
def createTable(self,tableName):
desc = HTableDescriptor(tableName)
hcd = HColumnDescriptor("i")
hcd.setCompressionType(Compression.Algorithm.GZ);
hcd.setBlocksize(64*1024)
hcd.setMaxVersions(1)
hcd.setMinVersions(0)
hcd.setInMemory(False)
hcd.setBlockCacheEnabled(True)
hcd.setBloomFilterType(BloomType.ROW)
hcd.setDataBlockEncoding(DataBlockEncoding.DIFF)
hcd.setScope(0) desc.addFamily(hcd) desc.setMaxFileSize(5368709120)
desc.setValue(desc.SPLIT_POLICY,'org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy')
if self.admin.tableExists(tableName):
self.admin.disableTable(tableName)
self.admin.deleteTable(tableName)
self.admin.createTable(desc)
def getTableInfo(self,tableName):
desc = admin.getTableDescriptor(tableName) return desc.toString()
if __name__ == '__main__':
conf = HBaseConfiguration()
admin = HBaseAdmin(conf) ct = CreateTable(conf,admin)
ct.createTable('test')
print ct.getTableInfo('test')

基于jython操作hbase的更多相关文章

  1. 基于Solr的HBase多条件查询测试

    背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级 的快 速检索,对于多字段的组合查询却无能为力.针对HBa ...

  2. Spark操作hbase

    于Spark它是一个计算框架,于Spark环境,不仅支持单个文件操作,HDFS档,同时也可以使用Spark对Hbase操作. 从企业的数据源HBase取出.这涉及阅读hbase数据,在本文中尽快为了尽 ...

  3. HBase(六)HBase整合Hive,数据的备份与MR操作HBase

    一.数据的备份与恢复 1. 备份 停止 HBase 服务后,使用 distcp 命令运行 MapReduce 任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群. 即,把数 ...

  4. 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化

    第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...

  5. HBase伪分布式安装(HDFS)+ZooKeeper安装+HBase数据操作+HBase架构体系

    HBase1.2.2伪分布式安装(HDFS)+ZooKeeper-3.4.8安装配置+HBase表和数据操作+HBase的架构体系+单例安装,记录了在Ubuntu下对HBase1.2.2的实践操作,H ...

  6. 吴裕雄--天生自然HADOOP操作实验学习笔记:使用hive操作hbase

    实验目的 熟悉hive和hbase的操作 熟悉hadoop.hbase.hive.zookeeper的关系 熟练大数据环境的搭建 学会分析日志排除问题 实验原理 1.hive整合hbase原理 前面大 ...

  7. PySpark操作HBase时设置scan参数

    在用PySpark操作HBase时默认是scan操作,通常情况下我们希望加上rowkey指定范围,即只获取一部分数据参加运算.翻遍了spark的python相关文档,搜遍了google和stackov ...

  8. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  9. Java操作hbase总结

    用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...

随机推荐

  1. 那些教程没有的php2-对象

    php.net 对象 在类定义内部,可以用 new self 和 new parent 创建新对象. 当把一个对象已经创建的实例赋给一个新变量时,新变量会访问同一个实例,就和用该对象赋值一样.可以用克 ...

  2. 设计模式总结篇系列:观察者模式(Observer)

    观察者模式中通常有两个基本的概念主题:观察者和被观察者.当被观察者状态发生改变时,需要通知相应的观察者,当然,每个被观察者所对应的观察者可能不知一个,他们之间是1:n的关系.用专业一点的术语对观察者模 ...

  3. Python杨辉三角算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- def triangles(): n = 1 aboveList = [] while True: if n ...

  4. galera cluster DDL节点间状态不一致的问题

    近期某个系统中的galera cluseter环境发生A DDL操作后,B节点未同步的情况,同时B节点的errorlog中有如下警告信息: 2016-07-23 17:31:32 18920 [War ...

  5. JVM的ClassLoader过程分析

    本文来自网络:深入分析Java ClassLoader原理 http://my.oschina.net/zhengjian/blog/133836 一. JVM的ClassLoader过程以及装载原理 ...

  6. JAVA书写规范

    java程序书写规范 命名规范    1.一般概念        1.尽量使用完整的英文描述符        2.采用适用于相关领域的术语        3.采用大小写混合使名字可读        4 ...

  7. js实现点击<li>标签弹出其索引值

    据说这是一道笔试题,以下是代码,没什么要文字叙述的,就是点击哪个<li>弹出哪个<li>的索引值即可: <html> <head> <style& ...

  8. GridView自带的分页功能实现

    要实现GrdView分页的功能操作如下:1.更改GrdView控件的AllowPaging属性为true.2.更改GrdView控件的PageSize属性为 任意数值(默认为10)3.更改GrdVie ...

  9. 转:EClipse 10个最有用的快捷键

    Eclipse快捷键 10个最有用的快捷键 Eclipse中10个最有用的快捷键组合  一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代 ...

  10. 在Android开发中使用Ant 二:进行一次完整的打包

    一次完整的Android打包要进行以下的几步:编译.代码混淆.打包apk.签名apk.apk优化. 为了能包涵使用NDK的情况,在这里使用一个有native代码的工程TestJni. 在工程根目录下新 ...