`
lookqlp
  • 浏览: 342828 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hbase 与 hive 结合

阅读更多
前置条件
hadoop hive hbase环境搭建完成。
搭建版本
hadoop-1.0.3
hive-0.9.0
hbase-0.94.2
zookeeper-3.3.5
步骤
配置hive xml,配置hbase与hive结合包
<property> 
<name>hive.aux.jars.path</name> 
<value>file:///usr/local/hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar,file:///usr/local/hive-0.9.0/lib/hbase-0.94.2.jar,file:///usr/local/hive-0.9.0/lib/zookeeper-3.3.5.jar</value>
</property>

将hbase-0.94.2.jar 、zookeeper-3.3.5.jar包copy至所有节点$HDOOP_HOME/lib及$HIVE_HOME/lib下。注意$HIVE_HOME/lib含有hbase包需要删除。
将hbase-site.xml文件copy至所有节点$HDOOP_HOME/conf下。
测试,启动hive,创建表
CREATE TABLE qq(key string, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:value")
TBLPROPERTIES ("hbase.table.name" = "xx");
--数据表
create table test(a string,b string);
--含有数据:
--1  a
--2  b
--3  c

若创建表不成功,查看hive日志提示如下异常:

2012-11-29 12:33:02,191 FATAL ExecMapper: java.lang.NoClassDefFoundError: com/google/protobuf/Message
    at org.apache.hadoop.hbase.io.HbaseObjectWritable.<clinit>(HbaseObjectWritable.java:263)
    at org.apache.hadoop.hbase.ipc.Invocation.write(Invocation.java:139)
    at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.sendParam(HBaseClient.java:638)
    at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:1001)
    at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:150)
    at $Proxy8.getProtocolVersion(Unknown Source)
......
2012-11-29 12:33:02,282 FATAL org.apache.hadoop.mapred.Child: Error running child : java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/io/HbaseObjectWritable
    at org.apache.hadoop.hbase.ipc.Invocation.write(Invocation.java:139)
    at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.sendParam(HBaseClient.java:638)
    at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:1001)
    at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:150)
    at $Proxy8.getProtocolVersion(Unknown Source)

表明hbase中protobuf-java-2.4.0a.jar包没有在集群的classpath中,查看该job的syslog logs "conf classpath =..."确实不存在该包,需要将protobuf-java-2.4.0a.jar包copy至所有节点$HADOOP_HOME/lib下,并需要重启集群(不重启该包不会被加载进classpath)

qq表创建表成功后,打开hbase shell窗口,list查看xx表已经存在。
hive表中插入数据:
insert into table qq select a as key,b as value from test;

分别查看hive中qq表,hbase中xx表数据,都有数据。----表示结合成功。

很多资料包括官网使用insert into table qq select * from test即可导入,但实践证明不成功,可能是hbase及hive版本导致的。

注意:如上sql中test表字段类型必须与qq表字段类型一致,若不一致会报如下异常:

Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"a":"a","b":"1"}
    at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:548)
    at org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:143)
    ... 7 more
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.serde2.SerDeException: HBase row key cannot be NULL
    at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:604)
    at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)
    at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)
    at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
    at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)

hive创建hbase已经存在的表:
CREATE EXTERNAL TABLE te(key string, value1 string,value2 string)   
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name,info:age")   
TBLPROPERTIES("hbase.table.name" = "test");

info表示列族,name和age为列族下的两个列。若hbase中还有info:class列,但创建hive关联表使用如上语句,执行select * from te只可得到key,value1、value2的值,即rowkey、name、age,没有class的值。
分享到:
评论

相关推荐

    HBase与hive整合 和 hive与hdfs结合的效率对比1

    2. rowkey设计上需要注意,尽量使rowkey均匀分布在预分配的N个Region上 3. 通过set hbase.client.scanner.cachi

    Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+ES+Redash等详细安装部署

    1、内容概要:Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+Elasticsearch+Redash等大数据集群及组件搭建指南(详细搭建步骤+实践过程问题总结)。 2、适合人群:大数据运维、大数据相关技术及组件初学者。 3、...

    Hive和Hase配置

    配置hive-0.9.0和hbase-0.94.1结合使用,部分内容如下: 1.拷贝hbase-0.94.1.jar和zookeeper-3.4.3.jar到hive/lib下。 注意:如hive/lib下已经存在这两个文件的其他版本,建议删除后使用hbase下的相关版本。 //...

    apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz

    Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对...直接使用HBase的API,结合协处理器(coprocessor)和自定义的过滤器的话,小范围的查询在毫秒级响应,千万数据的话响应速度为秒级

    Hadoop豆瓣电影分析可视化源码

    针对本次实验,我们需要用到Hadoop集群作为模拟大数据的分析软件,集群环境必须要包括,hdfs,hbase,hive,flume,sqoop等插件,最后结合分析出来的数据进行可视化展示,需要用到Python(爬取数据集,可视化展示)...

    基于Hadoop豆瓣电影数据分析实验报告

    针对本次实验,我们需要用到Hadoop集群作为模拟大数据的分析软件,集群环境必须要包括,hdfs,hbase,hive,flume,sqoop等插件,最后结合分析出来的数据进行可视化展示,需要用到Python(爬取数据集,可视化展示)...

    hbase-0.20.3.tar.gz

    HBase可以与hadoop-0.20-2较好组合,与hive0.6版本也结合较好

    新版全面系统完整的Hbase视频教程

    主要讲述了HBase详细的架构原理及特点、HBase内部各个角色的详细介绍、安装配置、HBase的Shell操作、新旧版本的读写数据详细流程、HBase的API操作、使用MapReduce以及Hive对HBase数据分析、Rowkey设计、预分区设计、...

    通俗易懂的Hbase升级版教程(含配套资料)

    主要讲述了HBase详细的架构原理及特点、HBase内部各个角色的详细介绍、安装配置、HBase的Shell操作、新旧版本的读写数据详细流程、HBase的API操作、使用MapReduce以及Hive对HBase数据分析、Rowkey设计、预分区设计、...

    IT十八掌徐培成大数据培训资料

    精心规划,课程涵盖Hadoop大数据... 企业案例,理论与实际相结合,技术与操作同进行,学以致用,止于至善。 从内到外理解大数据各种技术,HBase,Hive,Pig,Zookeeper等等技术源码级传授,从无到有掌握Hadoop技术。

    如何在一个简单的REST客户端使用SQL,Hadoop,Drill?

    在本文中,我将结合SQL、Hadoop、Drill、RESTwithJSON、NoSQL及HBase等技术,讨论并展示如何使用DrillRESTAPI来查询HBase和Hive。同时我也会分享一个使用DrillRESTAPI的简单jQuery客户端,利用J

    大数据视频_HBase视频教程

    主要讲述了HBase详细的架构原理及特点、HBase内部各个角色的详细介绍、安装配置、HBase的Shell操作、新旧版本的读写数据详细流程、HBase的API操作、使用MapReduce以及Hive对HBase数据分析、Rowkey设计、预分区设计、...

    深入理解大数据--大数据并行处理与编程实践

    大数据处理与编程实践》在总结多年来MapReduce并行处理技术课程教学经验和成果的基础上,与业界著名企业Intel公司的大数据技术和产品开发团队和资深工程师联合,以学术界的教学成果与业界高水平系统研发经验完美结合,...

    hadoop权威指南第2版

    《Hadoop权威指南(第2版)(修订•升级版)》从Hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍Hadoop这一高性能处理海量数据集的理想工具。全书共16章,3个附录,涉及的主题包括:Haddoop简介;MapReduce...

    大数据场景化解决方案.pdf

    数据存储与管理: ⼤数据利⽤分布式⽂件系统HDFS、HBase、Hive,实现对结构化、半结构化和⾮结构化数据的存储和管理。 数据处理与分析: 利⽤分布式并⾏编程模型和计算框架,结合机器学习和数据挖掘算法,实现对...

    Spring-Boot集成Neo4j结合Spark的朴素贝叶斯分类器实现基于电影知识图谱的智能问答系统.zip

    存储模块:搭建和配置HDFS分布式存储系统,并Hbase和MySQL作为备用方案。 ETL模块:加载原始数据,清洗,加工,为模型训练模块 和 推荐模块 准备所需的各种数据。 模型训练模块:负责产生模型,以及寻找最佳的模型...

    论文研究-基于分布式数据仓库的分类分析研究.pdf

    针对GAC-RDB分类算法只能应用于单机版数据仓库的局限性, 为了能够更方便、快捷地在云计算平台上开展数据挖掘工作, 基于分布式数据仓库HBase, 结合GAC-RDB分类算法的实现机理, 制定适合分布式平台的运行策略, 使用...

Global site tag (gtag.js) - Google Analytics