基于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工具,远程连接到 ...
随机推荐
- Unity烂笔头1-自定义INSPECTOR属性窗口节点项
1.添加输入框和标签 LevelScript: using UnityEngine; using System.Collections; public class LevelScript : Mono ...
- C#一个方法返回多个值
示例代码: static void Main(string[] args) { //声明 int value; string strOutValue; //调用函数 //函数的参数有两个返回的值 Re ...
- 004_URL 路由 - 定制路由系统 & 使用区域
定制路由系统 路由系统是灵活可配置的,当然还可以通过下面这两种方式定制路由系统,来满足其他需求. 1. 通过创建自定义的RouteBase实现: 2. 通过创建自定义路由处理程序实现. 创建自定义 ...
- 实现GridView翻页并且实现CheckBox选中功能的保持
在GridView与数据库进行绑定后,由得到的数据记录可能有许多条,以至一个页面无法容纳,这时需要进行多页显. 要实现分页显现,只要使用分页类 "PagedDataSource" ...
- Windows nexus 启动失败
现象: nexus Windows系统服务安装成功,但启动失败 D:\nexus-2.10.0-02-bundle\nexus-2.10.0-02\bin>nexus.bat Usage: ne ...
- 第二章--Win32程序运行原理 (部分概念及代码讲解)
学习<Windows程序设计>记录 概念贴士: 1. 每个进程都有赋予它自己的私有地址空间.当进程内的线程运行时,该线程仅仅能够访问属于它的进程的内存,而属于其他进程的内存被屏蔽了起来,不 ...
- jdk1.8 ThreadPoolExecutor实现机制分析
ThreadPoolExecutor几个重要的状态码字段 private static final int COUNT_BITS = Integer.SIZE - 3; private static ...
- 【干货分享】Node.js 中文资料导航
这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...
- innerHtml and Jquery.html()
1. innerHtml是Dom HTML的属性 是只读的,不能写入. 2. JQuery只能调用.html(),它可以加参数,改变原HTML内容. http://api.jquery.com/htm ...
- IOS6学习笔记(三)
1.ARC空声明变量 使用ARC的另一个优势是所有未初始化的变量默认都是“空值化”的.这意味着像下面这样的声明使用ARC编译后指向的是空值(nil): NSObject *myObject1,*myO ...