`
奔跑的羚羊
  • 浏览: 577763 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hive HBase 整合

    博客分类:
  • hive
阅读更多
hive hbase整合,要求比较多,1.hive的得是0.6.0(当前最新的版本)
2.hive本身要求hadoop的最高版本是hadoop-0.20.2
3.要求hbase的版本是0.20.3,其他版本需要重新编译hive_hbase-handler
但是新版的hbase(0.90)变动特别大,根本无法从编译。这点比较恶心,hbase目前升级比较快,当前是0.90(从0.20.6直接跳到0.89),至于为什么这样跳跃,参考官方的解释http://wiki.apache.org/hadoop/Hbase/HBaseVersions


1)启动Hbase,
要求hbase-0.20.3,zookeeper-3.2.2
如果使用的不是hbase-0.20.3需要重新编译hive_hbase-handler.jar

2)单节点HBase的连接
./bin/hive -hiveconf hbase.master=master:60000

3)集群HBase的连接
1.启动zookeeper
2.启动hbase
3.启动hive,添加zookeeper的支持
./bin/hive -hiveconf hbase.zookeeper.quorum= master,slave-A,slave-B

//所有的zookeeper节点

二、插入数据
启动
./bin/hive --auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  -hiveconf hbase.zookeeper.quorum=slave-001,slave-002,slave-003


hive
1.创建hbase识别的数据库
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");

hbase.table.name 定义在hbase的table名称
hbase.columns.mapping 定义在hbase的列族



2.使用sql导入数据
i.预先准备数据
a)新建hive的数据表
CREATE TABLE pokes (foo INT, bar STRING); 

b)批量插入数据
hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes; 

这个文件位于hive的安装目录下,examples/files/kv1.txt

ii.使用sql导入hbase_table_1

INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;

注意,默认的启动会报错的
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.ExecDriver
启动的时候要添加
-auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar


3查看数据
hive> select * from  hbase_table_1;

会显示刚刚插入的数据
86      val_86

hbase
1.登录hbase
[root@master hbase]# ./bin/hbase shell


2.查看表结构
hbase(main):001: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.7460 seconds


3.查看加载的数据

hbase(main):002:0> scan 'xyz'
ROW                          COLUMN+CELL                                                                                       
 86                          column=cf1:val, timestamp=1297690405634, value=val_86  
                                                    
1 row(s) in 0.0540 seconds
可以看到,在hive中添加的数据86,已经在hbase中了

4.添加数据
' hbase(main):008:0> put 'xyz','100','cf1:val','www.360buy.com'  
0 row(s) in 0.0630 seconds


Hive
参看hive中的数据
hive> select * from hbase_table_1;                                            
OK
100     www.360buy.com
86      val_86
Time taken: 8.661 seconds

刚刚在hbase中插入的数据,已经在hive里了

hive访问已经存在的hbase
使用CREATE EXTERNAL TABLE
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");




三、多列和多列族(Multiple Columns and Families)
1.创建数据库
CREATE TABLE hbase_table_2(key int, value1 string, value2 int, value3 int) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" = ":key,a:b,a:c,d:e"
);

2.插入数据
INSERT OVERWRITE TABLE hbase_table_2 SELECT foo, bar, foo+1, foo+2 
FROM pokes WHERE foo=98 OR foo=100;


这个有3个hive的列(value1和value2,value3),2个hbase的列族(a,d)
Hive的2列(value1和value2)对应1个hbase的列族(a,在hbase的列名称b,c),hive的另外1列(value3)对应列(e)位于列族(d)

3.登录hbase查看结构
hbase(main):003:0> describe "hbase_table_2"
DESCRIPTION                                                             ENABLED                               
 {NAME => 'hbase_table_2', FAMILIES => [{NAME => 'a', COMPRESSION => 'N true                                  
 ONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_M                                       
 EMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'd', COMPRESSION =>                                        
 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN                                       
 _MEMORY => 'false', BLOCKCACHE => 'true'}]}                                                                  
1 row(s) in 1.0630 seconds


4.查看hbase的数据
hbase(main):004:0> scan 'hbase_table_2'
ROW                          COLUMN+CELL                                                                      
 100                         column=a:b, timestamp=1297695262015, value=val_100                               
 100                         column=a:c, timestamp=1297695262015, value=101                                   
 100                         column=d:e, timestamp=1297695262015, value=102                                   
 98                          column=a:b, timestamp=1297695242675, value=val_98                                
 98                          column=a:c, timestamp=1297695242675, value=99                                    
 98                          column=d:e, timestamp=1297695242675, value=100                                   
2 row(s) in 0.0380 seconds


5.在hive中查看
hive> select * from hbase_table_2;
OK
100     val_100 101     102
98      val_98  99      100
Time taken: 3.238 seconds


参考资料
http://wiki.apache.org/hadoop/Hive/HBaseIntegration
分享到:
评论
4 楼 zenoh 2013-08-30  
你好我搭建好了hive+ hbase的环境,hbase也能正常增删改查。但是我执行hive向hbase的表插入数据时出现如下错误:
org.apache.hadoop.ipc.RemoteException(java.io.IOException): Unknown rpc kind RPC_WRITABLE
at org.apache.hadoop.ipc.Client.call(Client.java:1225)
at org.apache.hadoop.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:225)
at org.apache.hadoop.mapred.$Proxy20.getStagingAreaDir(Unknown Source)
at org.apache.hadoop.mapred.JobClient.getStagingAreaDir(JobClient.java:1324)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:102)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:951)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:945)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:945)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:919)
at org.apache.hadoop.hive.ql.exec.ExecDriver.execute(ExecDriver.java:448)
at org.apache.hadoop.hive.ql.exec.MapRedTask.execute(MapRedTask.java:138)
at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:138)
at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)
at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1374)
at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1160)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:973)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:893)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:412)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
Job Submission failed with exception 'org.apache.hadoop.ipc.RemoteException(Unknown rpc kind RPC_WRITABLE)'
3 楼 Angel_Night 2011-09-19  
lvshuding 写道
请问,导入数据时,kv1.txt的文件格式是什么样的?能贴出来一段例子吗?

238val_238
86val_86
311val_311
27val_27
165val_165
409val_409
255val_255
278val_278
98val_98
484val_484
265val_265
193val_193
401val_401
150val_150
273val_273
224val_224
369val_369
66val_66
128val_128
213val_213
146val_146
406val_406
429val_429
374val_374
152val_152
469val_469
145val_145
495val_495
37val_37
327val_327
281val_281
277val_277
209val_209
15val_15
82val_82
403val_403
166val_166
417val_417
430val_430
252val_252
292val_292
219val_219
287val_287
153val_153
193val_193
338val_338
446val_446
459val_459
394val_394
237val_237
482val_482
174val_174
413val_413
494val_494
207val_207
199val_199
466val_466
208val_208
174val_174
399val_399
396val_396
247val_247
417val_417
489val_489
162val_162
377val_377
397val_397
309val_309
365val_365
266val_266
439val_439
342val_342
367val_367
325val_325
167val_167
195val_195
475val_475
17val_17
113val_113
155val_155
203val_203
339val_339
0val_0
455val_455
128val_128
311val_311
316val_316
57val_57
302val_302
205val_205
149val_149
438val_438
345val_345
129val_129
170val_170
20val_20
489val_489
157val_157
378val_378
221val_221
92val_92
111val_111
47val_47
72val_72
4val_4
280val_280
35val_35
427val_427
277val_277
208val_208
356val_356
399val_399
169val_169
382val_382
498val_498
125val_125
386val_386
437val_437
469val_469
192val_192
286val_286
187val_187
176val_176
54val_54
459val_459
51val_51
138val_138
103val_103
239val_239
213val_213
216val_216
430val_430
278val_278
176val_176
289val_289
221val_221
65val_65
318val_318
332val_332
311val_311
275val_275
137val_137
241val_241
83val_83
333val_333
180val_180
284val_284
12val_12
230val_230
181val_181
67val_67
260val_260
404val_404
384val_384
489val_489
353val_353
373val_373
272val_272
138val_138
217val_217
84val_84
348val_348
466val_466
58val_58
8val_8
411val_411
230val_230
208val_208
348val_348
24val_24
463val_463
431val_431
179val_179
172val_172
42val_42
129val_129
158val_158
119val_119
496val_496
0val_0
322val_322
197val_197
468val_468
393val_393
454val_454
100val_100
298val_298
199val_199
191val_191
418val_418
96val_96
26val_26
165val_165
327val_327
230val_230
205val_205
120val_120
131val_131
51val_51
404val_404
43val_43
436val_436
156val_156
469val_469
468val_468
308val_308
95val_95
196val_196
288val_288
481val_481
457val_457
98val_98
282val_282
197val_197
187val_187
318val_318
318val_318
409val_409
470val_470
137val_137
369val_369
316val_316
169val_169
413val_413
85val_85
77val_77
0val_0
490val_490
87val_87
364val_364
179val_179
118val_118
134val_134
395val_395
282val_282
138val_138
238val_238
419val_419
15val_15
118val_118
72val_72
90val_90
307val_307
19val_19
435val_435
10val_10
277val_277
273val_273
306val_306
224val_224
309val_309
389val_389
327val_327
242val_242
369val_369
392val_392
272val_272
331val_331
401val_401
242val_242
452val_452
177val_177
226val_226
5val_5
497val_497
402val_402
396val_396
317val_317
395val_395
58val_58
35val_35
336val_336
95val_95
11val_11
168val_168
34val_34
229val_229
233val_233
143val_143
472val_472
322val_322
498val_498
160val_160
195val_195
42val_42
321val_321
430val_430
119val_119
489val_489
458val_458
78val_78
76val_76
41val_41
223val_223
492val_492
149val_149
449val_449
218val_218
228val_228
138val_138
453val_453
30val_30
209val_209
64val_64
468val_468
76val_76
74val_74
342val_342
69val_69
230val_230
33val_33
368val_368
103val_103
296val_296
113val_113
216val_216
367val_367
344val_344
167val_167
274val_274
219val_219
239val_239
485val_485
116val_116
223val_223
256val_256
263val_263
70val_70
487val_487
480val_480
401val_401
288val_288
191val_191
5val_5
244val_244
438val_438
128val_128
467val_467
432val_432
202val_202
316val_316
229val_229
469val_469
463val_463
280val_280
2val_2
35val_35
283val_283
331val_331
235val_235
80val_80
44val_44
193val_193
321val_321
335val_335
104val_104
466val_466
366val_366
175val_175
403val_403
483val_483
53val_53
105val_105
257val_257
406val_406
409val_409
190val_190
406val_406
401val_401
114val_114
258val_258
90val_90
203val_203
262val_262
348val_348
424val_424
12val_12
396val_396
201val_201
217val_217
164val_164
431val_431
454val_454
478val_478
298val_298
125val_125
431val_431
164val_164
424val_424
187val_187
382val_382
5val_5
70val_70
397val_397
480val_480
291val_291
24val_24
351val_351
255val_255
104val_104
70val_70
163val_163
438val_438
119val_119
414val_414
200val_200
491val_491
237val_237
439val_439
360val_360
248val_248
479val_479
305val_305
417val_417
199val_199
444val_444
120val_120
429val_429
169val_169
443val_443
323val_323
325val_325
277val_277
230val_230
478val_478
178val_178
468val_468
310val_310
317val_317
333val_333
493val_493
460val_460
207val_207
249val_249
265val_265
480val_480
83val_83
136val_136
353val_353
172val_172
214val_214
462val_462
233val_233
406val_406
133val_133
175val_175
189val_189
454val_454
375val_375
401val_401
421val_421
407val_407
384val_384
256val_256
26val_26
134val_134
67val_67
384val_384
379val_379
18val_18
462val_462
492val_492
100val_100
298val_298
9val_9
341val_341
498val_498
146val_146
458val_458
362val_362
186val_186
285val_285
348val_348
167val_167
18val_18
273val_273
183val_183
281val_281
344val_344
97val_97
469val_469
315val_315
84val_84
28val_28
37val_37
448val_448
152val_152
348val_348
307val_307
194val_194
414val_414
477val_477
222val_222
126val_126
90val_90
169val_169
403val_403
400val_400
200val_200
97val_97

2 楼 lvshuding 2011-04-07  
请问,导入数据时,kv1.txt的文件格式是什么样的?能贴出来一段例子吗?
1 楼 z_post 2011-03-23  
问个hive启动的问题:
使用:./bin/hive -hiveconf hbase.zookeeper.quorum= master,slave-A,slave-B 没有问题,可以启动。

但使用: ./bin/hive --auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  -hiveconf hbase.zookeeper.quorum=slave-001,slave-002,slave-003 
时, 系统提示如下错误信息:

Unexpected –-auxpath while processing |-S|-h|-e|-f

为什么?高人多帮忙,谢谢

相关推荐

    HIVE和HBASE的整合

    在HIVE中创建HBASE的外表,是实现HIVE和HBASE整合的关键步骤。外表是一种虚拟表,它不存储实际数据,而是指向HBASE中的实际数据。通过创建外表,HIVE可以直接访问HBASE中的数据,并且可以使用类SQL和各种函数来操作...

    hive和hbase整合

    【Hive与HBase整合详解】 Hive和HBase是两个大数据处理的重要组件。Hive提供了基于SQL的查询语言(HQL)来处理大规模的数据,适合于离线批处理;而HBase则是一个NoSQL数据库,它基于Google的Bigtable设计,提供高...

    hive与hbase整合经验谈

    将Hive与HBase整合,主要是为了结合两者的优点,实现批量处理和实时查询的无缝对接。整合的关键在于Hive的外部表功能,通过创建指向HBase表的外部表,我们可以用Hive的HQL查询HBase中的数据。 整合步骤如下: 1. *...

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

    ### 大数据工具篇之Hive与HBase整合完整教程 #### 一、引言 在大数据处理领域,Hive 和 HBase 是两种非常重要的工具。Hive 是一种数据仓库工具,可以用来进行数据提取、转换和加载(ETL),同时提供了一种 SQL ...

    hive与hbase整合经验谈.pdf

    Hive与HBase整合后可以实现多样的使用场景,包括但不限于数据的批量迁移、实时更新、周期性加载以及复杂的数据分析操作。 整合Hive与HBase后,可以在Hive中进行数据的插入、查询、连接(JOIN)、分组(GROUPBY)...

    Hive整合HBase资源文件.zip

    1. **Hive与HBase的集成背景**:介绍为什么需要将Hive与HBase整合,通常是因为需要结合Hive的数据处理能力与HBase的实时查询和高并发性能。 2. **Hive-HBase连接器**:文件"hive-hbase-handler-1.2.1.jar"是Hive...

    hive 整合 hbase

    ### Hive整合HBase知识点解析 #### 一、HBase简介及特性 HBase是一个构建在Hadoop分布式文件系统(HDFS)之上的分布式、可扩展的列式存储系统。它被设计用来处理海量数据,提供了高可靠性和高性能的数据访问能力。...

    hive-hbase-handler-1.2.2.jar

    hive和hbase整合的时候,如果出现不兼容的情况需要手动编译:hive-hbase-hander-1.2.2.jar把这个jar替换掉hive/lib里的那个jar包

    Hive与Hbase的整合

    Hive与Hbase的整合,集中两者的优势,使用HiveQL语言,同时具备了实时性

    scala-hive-HBASE-Api.7z

    在Java开发中,为了将这些组件整合在一起,你需要相关的jar包,例如包含Hive和HBase的API。这些API允许你在Scala程序中直接操作Hive和HBase,简化了数据处理的流程。例如,`scalatestOne`可能是一个Scala测试项目,...

    hadoop,hbase,hive版本整合兼容性最全,最详细说明【适用于任何版本】 -

    本文将详细介绍Hadoop、HBase和Hive的版本整合兼容性,以及如何确保它们在不同版本间顺畅协作。 首先,Hadoop作为基础平台,其版本选择会直接影响到HBase和Hive的运行。Hadoop的主要组件包括HDFS(分布式文件系统)...

    HadoopHive与Hbase整合中文最新版本

    用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 本文的目的是要讲述如何让Hbase和Hive能互相访问,让...

    hadoop,hbase,hive版本整合兼容性最全,最详细说明【适用于任何版本】

    本文将介绍Hadoop、HBase、Hive以及ZooKeeper的版本整合兼容性,以及如何根据版本找到兼容性信息。 首先,Hadoop是一个开源的分布式存储和计算框架,它由HDFS和MapReduce两部分组成。HDFS用于存储大数据,而...

    (编译过的)hive-hbase-handler-1.2.1.jar

    hive和hbase的整合所需要的编译后的jar包。 注意:这里的hbase版本为:1.2.1 hive的版本为:1.2.1

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

    《HBase与Hive整合及效率对比分析》 在大数据处理领域,HBase和Hive分别扮演着不同的角色。HBase是一款基于Hadoop的分布式数据库,适用于实时查询和大规模数据存储,而Hive则是一个数据仓库工具,侧重于离线批处理...

    hive-hbase-handler-3.1.1.jar

    HBase2.1.3整合Hive3.1.2,Hive官方的hive-hbase-handler-3.1.1.jar包不好用,自己编译后的,确认好用

    hadoop2.2+hbase0.96+hive0.12安装整合详细高可靠文档及经验总结

    6. Hive与HBase整合需要做哪些准备工作? **详细解答:** **1. MySQL的使用:** - 不需要在每个客户端安装MySQL,只需在服务器端安装即可。 - MySQL用于存储Hive的元数据,提高性能和可靠性。 **2. 客户端与...

    HIVE和HBASE区别

    "HIVE和HBASE区别" HIVE和HBASE是两种基于Hadoop的不同技术,分别是数据仓库和Key/Value系统。它们之间有很多区别,包括设计理念、应用场景、查询语言等方面。 HIVE HIVE是一个构建在Hadoop基础设施之上的数据...

Global site tag (gtag.js) - Google Analytics