基于jython操作hbase
2016-09-08 20:52
183 查看
一、前言
关于jython介绍,直接上官网www.jython.org,可以得到详细资料,这里只介绍一下jython操作hbase的一些方法,本质上和用java操作hbase差不多,只不过语法换成了python二、环境
hbase版本:0.98.6.1hadoop版本: 2.5.2
jython版本:2.7
三、jython安装配置
1 安装
关于hbase&hadoop的安装配置这里也不介绍,主要介绍一下jython的安装配置,其实安装很简单,就执行一条命令就OKjava -jar jython-installer-2.7.0.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')
相关文章推荐
- CentOS下基于hadoop0.20.2搭建hbase0.90.4操作实录
- Hadoop,Hbase 编程实战基于Hash 的 distinct 操作
- 基于Java操作HBase数据库
- spark1.4 基于rdd操作hbase
- Java API操作Hbase(基于0.96新的api)
- 基于scala 新版API操作HBase
- 使用Jython操作HBase
- spark1.4 操作hbase 基于rdd
- 基于midas的MIS中的用户操作日志的创建(待续)
- 基于C的文件操作
- 基于JAVASCRIPT操作XML的无刷新分页
- 基于单链表的列表基本操作 类C语言实现
- 基于角色的用户权限设计+TreeView【栏目权限 操作权限】
- 基于流的文件操作方式
- 基于C的文件操作 转载自 记算机名人录
- 处理基于XML的聊天程序的操作请求
- 读《掌握 Ajax》之基于Table的无刷新删除操作
- 基于WINAPI的文件操作
- 基于C的文件操作
- 基于C,C++的文件操作 20051027