关键词:
一、环境准备
需要将HBase的jar包拷贝到Hive中,以便Hive运行时能访问到Hbase
这里演示创建软连接的方式
ln -s $HBASE_HOME/lib/HBase-common-1.3.1.jar $HIVE_HOME/lib/HBase-common-1.3.1.jar ln -s $HBASE_HOME/lib/HBase-server-1.3.1.jar $HIVE_HOME/lib/HBase-server-1.3.1.jar ln -s $HBASE_HOME/lib/HBase-client-1.3.1.jar $HIVE_HOME/lib/HBase-client-1.3.1.jar ln -s $HBASE_HOME/lib/HBase-protocol-1.3.1.jar $HIVE_HOME/lib/HBase-protocol-1.3.1.jar ln -s $HBASE_HOME/lib/HBase-it-1.3.1.jar $HIVE_HOME/lib/HBase-it-1.3.1.jar ln -s $HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar $HIVE_HOME/lib/htrace-core-3.1.0-incubating.jar ln -s $HBASE_HOME/lib/HBase-hadoop2-compat-1.3.1.jar $HIVE_HOME/lib/HBase-hadoop2-compat-1.3.1.jar ln -s $HBASE_HOME/lib/HBase-hadoop-compat-1.3.1.jar $HIVE_HOME/lib/HBase-hadoop-compat-1.3.1.jar
二、Hbase中无表数据
此时hive需要建立一个内部表来管理数据,并且导入数据时只能用insert
数据如下
depid deptname sal
10 ACCOUNTING 1700
20 RESEARCH 1800
30 SALES 1900
40 OPERATIONS 1700
2.1hive建表语句
create table hive_table( deptid int, deptname string, sal string ) --固定格式,什么跟hive映射,就是XXXStorageHandler STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘ --这里字段要跟上面的保持一致,意思为deptid作为rowkey,deptname作为info列族中的deptname列 WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:deptname,info:num") --Hbase中的表名 TBLPROPERTIES ("hbase.table.name" = "dept2");
这里解释下为什么要用Stored by 而不是 row Format
Hive建表时分本地表(native table)和非本地表(non-native table):
本地表(native table): 指传统情况下。hive中表的数据是直接存储在hdfs上!建表时,可以指定ROW FORMAT 和 STORED AS
非本地表(non-native table): hive表中的数据没有存储在hdfs上!而是存储在其他的数据库中(例如hbase中,mongdb中,kafka中,ES中等等)
建表时指定STORED BY ’类名‘
STORED BY 代表,在向表中读写数据时,借助此handler类完成操作!
------------------------------------------------------------------------------------------------------
这时可能会报错:xecution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
原因是hive跟Hbase版本不兼容,需要编译hive源码
2.2利用insert导入数据
insert into hive_table select * from dept;
三、Hbase已有表数据
跟上个不同的是,这里只允许建外部表
3.1建表语句
CREATE external TABLE hive_HBase_dept_table( deptid int, deptname string, num int ) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘
--这里要跟Hbase表中的列族和列对应起来 WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:deptname,info:num") TBLPROPERTIES ("hbase.table.name" = "dept")
注意点
hive中表的列的类型,需要和hbase表中存储的数据类型一致,或需要保证转换不能失败!
在进行列的映射时,字段的顺序要和hive表中的列的顺序一致
这样建出来的表直接就是带有数据的
hbase与hive的集成操作(代码片段)
...进行Join和Union等复杂查询,同时也可以将hive表中的数据映射到HBase中;2.模型概念 2.1将ETL操作的数据存入HBase 2.2HBase作为Hive的数据源 2.3构建低延时的数据仓库 3.搭建环境 3.1修改hive-site.xm... 查看详情
建立hive和hbase的映射关系,通过spark将hive表中数据导入clickhouse(代码片段)
...43;Spark+ClickHouse在HBase中建表,通过Hive与HBase建立映射关系,实现双方新增数据后彼此都可以查询到。通过spark将Hive中的数据读取到并经过处理保存到ClickHouse中一Hbase1Hbase表操作1.1创建命名空间hbase(main):008:0>create_nam... 查看详情
HiveContext - 无法访问在 hive 中映射为外部表的 hbase 表
】HiveContext-无法访问在hive中映射为外部表的hbase表【英文标题】:HiveContext-unabletoaccesshbasetablemappedinhiveasexternaltable【发布时间】:2017-06-2211:26:22【问题描述】:我正在尝试使用Spark中的HiveContext访问在hive中映射的hbase表。但我得... 查看详情
hbase总结(代码片段)
HBase概述HBase表的核心概念总结HBase的架构MasterRegionServer结构功能HBase的安装与shell操作安装启动与关闭ddl与dml操作ddl(表操作)dml(数据操作)HBase进阶HBase的高性能原理架构细节读写流程MemStoreFlushMemStore刷写时机合并与切分JAVAAPITOCHBase... 查看详情
hbase与hive集成(代码片段)
...集成使用案例一建立Hive表,关联HBase表,插入数据到Hive表的同时能够影响HBase表在Hive中创建表同时关联HBaseCREATETABLEhive_hbase_emp_table(empnoint,enamestring,jobstring,mgrint,hiredatestring,saldouble,commdouble,deptnoint)STOREDBY'org.apache.hadoop.hive.hbase.H... 查看详情
6-[表操作]--foreignkey表与表的关系(代码片段)
1、foreignkey (1)快速理解foreignkey 员工信息表有三个字段:工号姓名部门 公司有3个部门,但是有1个亿的员工,那意味着部门这个字段需要重复存储,部门名字越长,越浪费 解决方法: 我们... 查看详情
hbase(代码片段)
...ase部署2.1.4HBase服务的启动2.2HBaseShell操作2.2.1基本操作2.2.2表的操作3HBase进阶3.1架构原理3.2写流程3.3MemStoreFlush3.4读流程3.5StoreFileCompaction3.6RegionSplit4.2HBaseAPI4.3MapReduce4.3.1官方HBase-MapReduce4.3.2使用MapReduce将本地数据导入到HBase4.3.3自定... 查看详情
hive表的常用操作(代码片段)
...询练习,如groupby、having、join、sortby、orderby等。一:hive表的操作1.1.1hive的库的创建与数据库的查看:hive(default)>createdatabaseyangyang;hive(default) 查看详情
hbase(代码片段)
...的集成,使得能够在HBase表上使用hivesql语句进行查询插入操作以及进行Join和Union等复杂查询、同时也可以将 查看详情
用idea操作hbase数据库,并映射到hive
...件:需要有Hadoop,hive,zookeeper,hbase环境映射:每一个在Hive表中的域都存在于HBase中,而在Hive表中不需要包含所有HBase中的列。HBase中的RowKey对应到Hive中为选择一个域使用:key来对应,列族(cf:)映射到Hive... 查看详情
hive表的创建的操作与测试(代码片段)
Hive中创建表的三种方式,应用场景说明及练习截图内部表和外部表的区别,练习截图分区表的功能、创建,如何向分区表中加载数据、如何检索分区表中的数据,练习截图一:hiveHQL的表操作:1.1.1创建数据库:hive>createdatabasey... 查看详情
hive表的创建的操作与测试(代码片段)
Hive中创建表的三种方式,应用场景说明及练习截图内部表和外部表的区别,练习截图分区表的功能、创建,如何向分区表中加载数据、如何检索分区表中的数据,练习截图一:hiveHQL的表操作:1.1.1创建数据库:hive>createdatabasey... 查看详情
单链表与顺序表的对比(代码片段)
时间复杂度的对比:操作链表顺序表访问元素O(n)O(1)从头部删除元素O(1)O(n)从尾部删除元素O(n)O(1)在中间插入元素O(n)O(n)总结:链表失去了顺序表随机读取的优点,同时链表由于增加了节点的指针域,空间开销比较大,但对存储空间使用... 查看详情
更改 Hive 表的架构
】更改Hive表的架构【英文标题】:AltertheschemaofHivetable【发布时间】:2014-02-2006:30:28【问题描述】:我想更改在Hive中创建的映射到HBase字段的表。最近我在HBase中添加了更多列,因此也希望将这些字段添加到Hive中。我使用的创作... 查看详情
hbase操作命令(代码片段)
hbase操作命令增删表、增删域名空间、修改表的属性查询、插入、删除数据增删表、增删域名空间、修改表的属性进入hbase客户端:[atguigu@hadoop1hbase-1.3.1]$hbaseshell SLF4J:ClasspathcontainsmultipleSLF4Jbindings. SLF4J:Foundbindingin[jar:file:/op... 查看详情
hive入门(代码片段)
...1创建数据库4.3修改数据库4.4删除数据库4.5创建表4.5.1管理表与外部表4.5.2管理表与外部表的互相转换4.6修改表5DML数据操作5.1数据导入5.1.1向表中装载数据(Load)5.1.2通过查询语句向表中插入数据5.2数据导出6查询7分区表和... 查看详情
hive+hbase,用hql查询hbase(代码片段)
Hive整合HBase:数据实时写Hbase,实现在Hive中用sql查询以下操作的Hive版本:2.3.6,HBase版本:2.0.4在HBase中创建表:t_hbase_stu_infocreate‘t_hbase_stu_info‘,‘st1‘在Hive中创建外部表:t_hive_stu_infocreateexternaltablet_hive_stu_info(idint,namestring,ageint,s... 查看详情
hive表与外部表的区别
相信很多用户都用过关系型数据库,我们可以在关系型数据库里面创建表(createtable),这里要讨论的表和关系型数据库中的表在概念上很类似。我们可以用下面的语句在Hive里面创建一个表:hive>createtablewyp(idint, >nam... 查看详情