一直想将hbase 与hive整合在一起,因为公司项目工期一期紧似一期,故一直推后。还不知道推到什么时候呢。

今天尝试编译hive,看着官方文档。感觉非常easy:

1、svn co http://svn.apache.org/repos/asf/hive/trunk hive  先下载源码吧。我下载最新代码0.14

2、cd hive ;  mvn  package -Phadoop-2,dist, 编译后须要一大堆測试信息,故去掉測试过程

mvn  package -Phadoop-2,dist -Dtar -DskipTests,

刚開始编译到common的时候报错。 进入common模块单独编译,要增加hadoop2,而且要有hadoop2的相关文件。

下载一大堆文件后,显示编译成功。

注意编译hadoop本地包的时候须要增加-Pnative

3、在hbase中创建表:

public static void createTable(HBaseAdmin admin) {
try {
TableName tn = TableName.valueOf(TABLENAME);
HTableDescriptor tableDescripter = new HTableDescriptor(tn);
HColumnDescriptor column = new HColumnDescriptor("x");
// column.setTimeToLive(600000);
// column.setCompressionType(Compression.Algorithm.LZO);
tableDescripter.addFamily(column);
byte[][] regions = new byte[][]{
Bytes.toBytes("1"),
Bytes.toBytes("2"),
Bytes.toBytes("3"),
Bytes.toBytes("4"),
Bytes.toBytes("5"),
Bytes.toBytes("6"),
Bytes.toBytes("7"),
Bytes.toBytes("8"),
Bytes.toBytes("9"),
Bytes.toBytes("0")
};
admin.createTable(tableDescripter,regions);
} catch (IOException ex) {
Logger.getLogger(HbaseConfig.class.getName()).log(Level.SEVERE, null, ex);
}
}

4、在hbase 中插入数据:

HbaseUtil util = new HbaseUtil();
try (HTable table = new HTable(HbaseConfig.getConfig(), HbaseConfig.TABLENAME)) {
for (int i = 0; i < 10; i++) {
String dmpid = generateDmpid();
String channel = "5030";
String value = "dmpid" + dmpid;
Put p = new Put(Bytes.toBytes(reverse(dmpid)));
p.add(Bytes.toBytes("x"), Bytes.toBytes(channel), Bytes.toBytes(value));
if (value != null && !"".equals(value) && !"null".equals(value)) {
p.add(Bytes.toBytes("x"), Bytes.toBytes("5020"), Bytes.toBytes(value));
//channel uid
}
table.put(p);
table.flushCommits();
}
}

5、在hive中创建关联表

使用下面命令启动hive:

hive --hiveconf hbase.zookeeper.quorum=host107,host108,host109

启动完毕在hive控制台运行以下命令

CREATE EXTERNAL TABLE emaruser(key string, google string,tanx string,tencent string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,x:5010,x:5020,x:5030")
TBLPROPERTIES("hbase.table.name" = "emar_user_relation");

6、在hive中查询成功

hive> select * from emaruser;
OK
0054308844100908791141 NULL dmpid1411978090014488034500 NULL
0101677395300318791141 NULL dmpid1411978130035937761010 dmpid1411978130035937761010
0529909431699808791141 NULL dmpid1411978089961349099250 NULL
0816959407102198791141 NULL dmpid1411978912017049596180 dmpid1411978912017049596180
2144264024543118791141 dmpid1411978113454204624412 dmpid1411978113454204624412 NULL
2309952861202198791141 NULL dmpid1411978912021682599032 dmpid1411978912021682599032
3106277691400318791141 NULL dmpid1411978130041967726013 dmpid1411978130041967726013
3109618614400318791141 NULL dmpid1411978130044168169013 dmpid1411978130044168169013
3207091484943118791141 dmpid1411978113494841907023 dmpid1411978113494841907023 NULL
3265583421200318791141 NULL dmpid1411978130021243855623 dmpid1411978130021243855623
3449017552200908791141 NULL dmpid1411978090022557109443 NULL
3645762585202198791141 NULL dmpid1411978912025852675463 dmpid1411978912025852675463
3660257098743118791141 dmpid1411978113478907520663 dmpid1411978113478907520663 NULL
3701620688943118791141 dmpid1411978113498860261073 dmpid1411978113498860261073 NULL
380639403302198791141 NULL dmpid141197891203304936083 dmpid141197891203304936083

大功告成。

by the way

使用两个节点的client,hbase入库达到35000条/秒。

集群6台server。

HIVE HBASE 整合的更多相关文章

  1. hive与hbase整合过程

    实现目标 Hive可以实时查询Hbase中的数据. hive中的表插入数据会同步更新到hbase对应的表中. 可以将hbase中不同的表中的列通过 left 或 inner join 方式映射到hiv ...

  2. Hive(五):hive与hbase整合

    配置 hive 与 hbase 整合的目的是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信,两者通信主要是依靠hive_hbase-h ...

  3. 《OD大数据实战》HBase整合MapReduce和Hive

    一.HBase整合MapReduce环境搭建 1. 搭建步骤1)在etc/hadoop目录中创建hbase-site.xml的软连接.在真正的集群环境中的时候,hadoop运行mapreduce会通过 ...

  4. Hadoop Hive与Hbase整合+thrift

    Hadoop Hive与Hbase整合+thrift 1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...

  5. 大数据工具篇之Hive与HBase整合完整教程

    大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...

  6. Hive与Hbase整合

    Hive与Hbase整合 1.文档 Hive HBase Integration 2.拷贝jar文件 2.1.把Hbase的lib目录下面的jar文件全部拷贝到Hive的lib目录下面 cd /hom ...

  7. Hive篇---Hive与Hbase整合

     一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...

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

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

  9. hive存储处理器(StorageHandlers)以及hive与hbase整合

    此篇文章基于hive官方英文文档翻译,有些不好理解的地方加入了我个人的理解,官方的英文地址为: 1.https://cwiki.apache.org/confluence/display/Hive/S ...

随机推荐

  1. Facade 门面模式 封装 MD

    门面模式 简介 作用:封装系统功能,简化系统调用 门面模式要求一个系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行.门面模式提供一个高层次的接口,使得系统更易于使用. 门面模式的 ...

  2. 在Servlet的init方法中创建线程

    servlet代码如下: package com.weichat.servlet; import java.io.IOException; import javax.servlet.ServletEx ...

  3. Element table使用技巧详解

    1.控制table某些行数不显示 下载附件的需求,有些行有附件,有些没有,所以需要过滤,重点是:Array.filter()使用 <el-card :body-style="{ pad ...

  4. Cocos Studio is EOL'd

    Cocos Studio is EOL'd Cocos Studio has been EOL'd as of April 2016. There will be no more releases o ...

  5. 【python】如何去掉使用BeautifulSoup读取html出现的警告UserWarning: You provided Unicode markup but also provided a value for from_encoding

    如果我们这样读取html页面 soup= BeautifulSoup(rsp.text,'html.parser',from_encoding='utf-8')  # 粗体部分多余了 就会出现下面的警 ...

  6. 安装Ubuntu 桌面版 12.04 LTS 过程之记录

    [下载ISO文件刻录到光盘上] 1.首先从http://www.ubuntu.com/download/desktop/zh-CN找到合适的版本下载. 2.完毕后,将ISO文件放好.然后启动nero, ...

  7. IOS遇到的问题总结

    1.NSString *path = [[NSBundle mainBundle] pathForResource:@"desc" ofType @"plist" ...

  8. ubuntu 软件包管理工具 dpkg,apt-get,aptitude 区别

    ubuntu 软件包管理工具 dpkg,apt-get,aptitude 区别 一:dpkg dpkg 是一种比较低层的软件包安装管理工具,在安装时,不会安装软件包的依赖关系:只能安装所要求的软件包: ...

  9. JDK1.7的一些新特性

    整理了几条对开发可能用到概率高的 1.swicth支持对String的判断:(以前只能支持Int及以下的) switch (s) { case "1": break; case & ...

  10. pythong 中的 __call__

    python __call__ (可调用对象) __call__ Python中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的. 换句话说,我们可以把这个类型的 ...