基于jython操作hbase
一、前言
关于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的更多相关文章
- 基于Solr的HBase多条件查询测试
背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级 的快 速检索,对于多字段的组合查询却无能为力.针对HBa ...
- Spark操作hbase
于Spark它是一个计算框架,于Spark环境,不仅支持单个文件操作,HDFS档,同时也可以使用Spark对Hbase操作. 从企业的数据源HBase取出.这涉及阅读hbase数据,在本文中尽快为了尽 ...
- HBase(六)HBase整合Hive,数据的备份与MR操作HBase
一.数据的备份与恢复 1. 备份 停止 HBase 服务后,使用 distcp 命令运行 MapReduce 任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群. 即,把数 ...
- 大数据技术之_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 对象的方法以及关 ...
- HBase伪分布式安装(HDFS)+ZooKeeper安装+HBase数据操作+HBase架构体系
HBase1.2.2伪分布式安装(HDFS)+ZooKeeper-3.4.8安装配置+HBase表和数据操作+HBase的架构体系+单例安装,记录了在Ubuntu下对HBase1.2.2的实践操作,H ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:使用hive操作hbase
实验目的 熟悉hive和hbase的操作 熟悉hadoop.hbase.hive.zookeeper的关系 熟练大数据环境的搭建 学会分析日志排除问题 实验原理 1.hive整合hbase原理 前面大 ...
- PySpark操作HBase时设置scan参数
在用PySpark操作HBase时默认是scan操作,通常情况下我们希望加上rowkey指定范围,即只获取一部分数据参加运算.翻遍了spark的python相关文档,搜遍了google和stackov ...
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- Java操作hbase总结
用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...
随机推荐
- 重构if...else...或者switch程序块
我们在开发asp.net时,经常有使用if...else...或者是使用switch来进行多个条件判断.如下面这篇<用户控件(UserControl) 使用事件 Ver2>http://w ...
- SQL Server数据库ROW_NUMBER()函数使用详解
SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_ ...
- 【转载】JS获取屏幕大小
前些日子需要给项目的弹窗上面罩,因为项目左侧是树形菜单,右侧嵌套的iframe ,iframe 的内容不是固定大小,那么,面罩的大小也就不是固定的 因此,用到了JQuery获取当前页面的窗口大小,于是 ...
- C#如何使用异步编程
怎么使用异步,就是用委托进行处理,如果委托对象在调用列表中只有一个方法,它就可以异步执行这个方法.委托类有两个方法,叫做BeginInvoke和EndInvoke,它们是用来异步执行使用. 异步有三种 ...
- wrong requestcode when using startActivityForResult
You are calling startActivityForResult() from your Fragment. When you do this, the requestCode is ch ...
- springMVC全局Exception异常处理SimpleMappingExceptionResolver
继承了SimpleMappingExceptionResolver 贴上代码 /** * 对controller异常进行全局处理 * 区分了对普通请求和ajax请求的异常处理,普通请求返回到配置的er ...
- String系列
String 简介 String 是java中的字符串,它继承于CharSequence.String类所包含的API接口非常多.为了便于今后的使用,我对String的API进行了分类,并都给出的演示 ...
- 【GPU编解码】GPU硬解码---DXVA
前面介绍利用NVIDIA公司提供的CUVID库进行视频硬解码,下面将介绍利用DXVA进行硬解码. 一.DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范.DXVA规范制定硬件加速解 ...
- android 内存泄露调试
一.概述 1 二.Android(Java)中常见的容易引起内存泄漏的不良代码 1 (一) 查询数据库没有关闭游标 2 (二) 构造Adapter时,没有使用缓存的 convertView 3 (三) ...
- Python基础(4)--字符串
所有标准的序列操作对字符串都适用,但字符串是不可变的 本文地址:http://www.cnblogs.com/archimedes/p/python-string.html,转载请注明源地址. 字符串 ...