文档章节

hive-hbase集成

十一月不远
 十一月不远
发布于 2014/10/10 14:32
字数 924
阅读 56
收藏 0

##用法(Usage)## 存储处理器(storage handler)被构建为一个独立的模块,hive-hbase-handler-x.y.z.jar,它必须在Hive client auxpath 是可用的,并且和HBase,Guava和Zookeeper jars。它同样需要设置正确的配置属性来连接到正确的HBase master。查看the HBase documentation关于怎样建立一个HBase集群。

下面时一个使用CLI源码构建环境,针对一个单节点HBase server的例子。(注意在Hive 0.9.0中,jar位置和名字有所变化,所以,之前的版本中,需要做些改变)。

<pre> $HIVE_SRC/build/dist/bin/hive --auxpath $HIVE_SRC/build/dist/lib/hive-hbase-handler-0.9.0.jar,$HIVE_SRC/build/dist/lib/hbase-0.92.0.jar,$HIVE_SRC/build/dist/lib/zookeeper-3.3.4.jar,$HIVE_SRC/build/dist/lib/guava-r09.jar --hiveconf hbase.master=hbase.yoyodyne.com:60000 </pre>

Here's an example which instead targets a distributed HBase cluster where a quorum of 3 zookeepers is used to elect the HBase master:

<pre> $HIVE_SRC/build/dist/bin/hive --auxpath $HIVE_SRC/build/dist/lib/hive-hbase-handler-0.9.0.jar,$HIVE_SRC/build/dist/lib/hbase-0.92.0.jar,$HIVE_SRC/build/dist/lib/zookeeper-3.3.4.jar,$HIVE_SRC/build/dist/lib/guava-r09.jar --hiveconf hbase.zookeeper.quorum=zk1.yoyodyne.com,zk2.yoyodyne.com,zk3.yoyodyne.com </pre>

这个处理器需要Hadoop 0.20或者更高版本,并且只 hadoop-0.20.x, hbase-0.92.0 and zookeeper-3.3.4进行了测试。如果你不是使用hbase-0.92.0,你需要重新构建处理器和HBase jar 使匹配你的版本,并且改变相应的 --auxpath 。如果不使用匹配的版本会导致误导性的连接故障,如MasterNotRunningException因为HBase的RPC协议经常变化。

为了通过使用Hive管理来创建一个新的HBase表,使用STORED BY 语句在CREATE TABLE:

<pre> CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz"); </pre>

hbase.columns.mapping 属性时必需的,并且将在下节解释。hbase.table.name属性是可选的,它控制HBase中这个表的名字,并且运行Hive表有一个不同的名字。在这个例子中,表在Hive中被称为hbase_table_1,在HBase中是xyz。如果为指定,Hive和HBase中的表名将会一样。

在执行上面的命令后,你因该可以看见一的新(空)表,在HBase shell下:

<pre> $ hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Version: 0.20.3, r902334, Mon Jan 25 13:13:08 PST 2010 hbase(main):001:0> list xyz 1 row(s) in 0.0530 seconds hbase(main):002:0> describe "xyz" DESCRIPTION ENABLED {NAME => 'xyz', FAMILIES => [{NAME => 'cf1', COMPRESSION => 'NONE', VE true RSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]} 1 row(s) in 0.0220 seconds hbase(main):003:0> scan "xyz" ROW COLUMN+CELL 0 row(s) in 0.0060 seconds </pre>

注意尽管在映射中指定了一个列名"val“,在HBase shell 下DESCRIBE 命令输出中只显示列簇名‘cf1’。这个应为在HBase中只有列簇(不是列)在表级别的元数据时已知的,一个列簇中的列名只在每一行级别呈现。

下面时怎样移动数据从Hive到HBase表,(查看 GettingStarted了解怎样先在Hive中创建示例表pokes)。

<pre> INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=98; </pre>

使用HBase shell验证数据确实被加载:

<pre> hbase(main):009:0> scan "xyz" ROW COLUMN+CELL 98 column=cf1:val, timestamp=1267737987733, value=val_98 1 row(s) in 0.0110 seconds </pre>

然后通过Hive查询数据:

<pre> hive> select * from hbase_table_1; Total MapReduce jobs = 1 Launching Job 1 out of 1 ... OK 98 val_98 Time taken: 4.582 seconds </pre>

由于WAL开销插入大量数据可能会很缓慢。如果你想禁用它,确保你拥有HIVE-1383(即Hive 0.6),然后执行这个命令在INSERT之前:

<pre> set hive.hbase.wal.enabled=false; </pre>

注意:禁用WAL可能导致数据丢失,如果HBase错误发生,所以仅仅在你有一些可用的其他的回复策略时使用。

如果你想使用Hive访问一个已存在的HBase表,使用CREATE EXTERNAL TABLE:

<pre> CREATE EXTERNAL TABLE hbase_table_2(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val") TBLPROPERTIES("hbase.table.name" = "some_existing_table"); </pre>

同样,hbase.columns.mapping是必须的(and will be validated against the existing HBase table's column families))。然而hbase.table.name是可选的。

© 著作权归作者所有

十一月不远

十一月不远

粉丝 39
博文 78
码字总数 61436
作品 1
海淀
程序员
私信 提问
Hive学习总结之五:HBase和Hive的集成

Hive和Hbase有各自不同的特征:hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟的。Hive集成Hbase就是为了使用hbase的一些特性。如...

酷帅CoolBash
2013/03/10
9.8K
0
hive与hbase数据交互的详解指南 | ApacheCN(apache中文网)

HBase和Hive的集成原理 ApacheCN | apache中文网 Hive和Hbase有各自不同的特征:hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟...

片刻
2014/06/28
1.5W
0
利用EMR Hive关联云HBase

云HBase需要借助外部Hive对多表进行关联分析,后续云HBase将集成Spark,更加建议使用Spark分析HBase数据。本文简单介绍下如何利用EMR的Hive关联云HBase的表。 1. 环境准备 购买按量计费的EMR...

巴客
2018/10/14
0
0
hive 与 hbase 结合

一、hive与hbase的结合 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要。使用Hive读取Hbase中的数据,可以使用HQL语句在HBase表上进行查询、插入操作;甚...

meteor_hy
2018/06/26
0
0
HBase实战 | Hive数据导入云HBase

网络环境 专线:用户需要把hbase集群的VPC相关网络信息配置到专线里面,可直通hbase环境 公有云虚拟机VPC环境:选择和hbase通VPC 其他:需要开hbase公网 注意:默认导入hbase数据,依赖的hba...

hbase小能手
2018/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java Varargs 可变参数使用

Java1.5 提供了一个叫varargs的新功能,就是可变长度的参数。 "Varargs"是 “variable number of arguments”的意思。有时候也被简单的称为 “variable arguments”。 定义实参个数可变的方法...

honeymoose
今天
69
0
IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版

注:本人使用的idea是最新版(2019.1.2),要是其他的版本的不要惊慌〜,基本上都一样,没有什么太大的差别的 首先我要说一下,拉取项目分两个,一个,你就没有项目,拉取仓库的整个项目,而...

杨木发
今天
54
0
pyqt5环境搭建(Ubuntu19.10+pycharm+python3)

1.安装pyqt5 sudo apt-get install python3-pyqt5 sudo apt-get install qttools5-dev-tools sudo apt-get install qt5-default 2.安装pycharm 下载pycharm社区版安装包并解压 在桌面新建pyc......

小芯片
今天
54
0
Vue造轮子-tab组件(中)

1. 如果给一个标签一个class,标签本身又有class,vue是默认会合并的。只有两个属性是这样一个是class,一个是style。这样就比较好改样式。 <g-tabs-head class="red"></g-tabs> 2. 组件的...

ories
昨天
59
0
Windows 版本 Anaconda 配置加速源安装软件

C:\Users\lenovo\.condarc 首先安装Anaconda最新版本。 其次添加安装目录到环境变量。文本为 C:\ProgramData\Anaconda3\Library\bin 运行 conda 命令在 Windows 用户下生成文件 .conda...

白豆腐徐长卿
昨天
232
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部