一、前言

关于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. 批量插入数据 C# SqlBulkCopy使用

    转自:http://blog.csdn.net/wangzh300/article/details/7382506 private static void DataTableToSQLServer( ...

  2. 【JS复习笔记】02 对象与函数

    好吧,因为很重要的事情,几天没写笔记了. 关于对象: ||可以用来填充默认值,如:myApp.name || "无" &&可以用来避免错误,myApp.NameOb ...

  3. WinForm给控件加入hint文字

    本文代码主要是参考别人的,仅为个人记录,方面后续使用~ 效果图: 主要代码在一个Win32Utility类中,代码如下: public static class Win32Utility { [Dll ...

  4. 与众不同 windows phone (39) - 8.0 联系人和日历

    [源码下载] 与众不同 windows phone (39) - 8.0 联系人和日历 作者:webabcd 介绍与众不同 windows phone 8.0 之 联系人和日历 自定义联系人存储的增删 ...

  5. [PE结构分析] 11.资源表结构

    资源表是一个树形结构,可以设置成2的31次方的层数,Windows 使用了3级: 类型->名称->语言 其中涉及到四个结构: Data Description Resource Direc ...

  6. 3kb jQuery代码搞定各种树形选择。

    自制Jquery树形选择插件. 对付各种树形选择(省市,分类..)90行Jquery代码搞定,少说废话直接上插件代码.稍后介绍使用说明.是之前写的一个插件的精简版. 1.Jquery插件代码 /* * ...

  7. TSQL生成Combguid

    Nhibernate实现combguid /// <summary> /// Generate a new <see cref="Guid"/> using ...

  8. Javascript中的Label语句

    在javascript中,我们可能很少会去用到 Label 语句,但是熟练的应用 Label 语句,尤其是在嵌套循环中熟练应用 break, continue 与 Label 可以精确的返回到你想要的 ...

  9. 为网站添加ico图标

    1.将目标图片装换为.ico格式 在线转换工具:http://www.bitbug.net/ 2.将装换后的图标放入项目文件中,一般命名为favicon 3.在项目文件的index页面中引入 < ...

  10. Interoperability between Java and SharePoint 2013 on Premises

    http://ctp-ms.blogspot.com/2012/12/interoperability-between-java-and.html   Introduction One of the ...