当前位置:   article > 正文

hbase 数据导出乱码_hbase集成hive

hive整合hbase时,hbase上面中文显示不出来

46b5325329d28b96e3ca411643380d71.png

前言

hive提供了与Hbase的集成,是的能够在Hbase表上使用hive sql语句进行查询、插入操作以及进行join和Union等复杂查询、同时也可以将hive表中的数据映射到Hbase中。

当我们在使用hive时候,在数据量多的时候就会发现非常的慢,一个简单的sql都要半天,其实我们追寻他的原因很简单,首先他是把sql翻译成mapreduce来执行,然后mapreduce又是提交给yarn去运行,可以说过程漫长,加上mapreduce本身就足够慢,所以本文从集成hbase的方面来调优,或者说是加快查询速度,当然了,最后,还会探讨如何用sql语言去查询,毕竟hbase是nosql的。

官方配置文档地址

https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 

这个是在hive的用户说明文档中。

配置

1.修改hive-site.xml文件,添加配置属性

  1. <property>
  2. <name>hbase.zookeeper.quorum</name>
  3. <value>node1:2181,node2:2181,node3:2181</value>
  4. </property>

2.修改hive-env.sh文件,添加hbase的依赖包到hive的classpath中。

export HIVE_CLASSPATH=$HIVE_CLASSPATH:/opt/bigdata/hbase/lib/*

注意:1.这里后面的路径换成自己的安装目录2.hive-env.sh这个文件不存在,但是存在hive-env.sh-template文件,复制一份修改为hive-env.sh即可。

3.使用编译好的hive-hbase-handler-1.2.1.jar替换hive之前lib目录下面的该jar包

这里说的编译主要是解决hive和hbase不兼容的情况下做的,主要是更改pom.xml中的依赖,然后重新编译一下。如果本身安装就是兼容的版本,这步就可以省略了。

将hbase表映射到hive表中

配置完上面的内容,就可以做个实验来检查一下了。

1.在hbase中创建一张表

create 'hbase_test','f1','f2','f3'

2.加载数据到hbase_test表中

  1. put 'hbase_test','r1','f1:name','zhangsan'
  2. put 'hbase_test','r1','f2:age','20'
  3. put 'hbase_test','r1','f3:sex','male'
  4. put 'hbase_test','r2','f1:name','lisi'
  5. put 'hbase_test','r2','f2:age','30'
  6. put 'hbase_test','r2','f3:sex','female'
  7. put 'hbase_test','r3','f1:name','wangwu'
  8. put 'hbase_test','r3','f2:age','40'
  9. put 'hbase_test','r3','f3:sex','male'

3.创建基于hbase的hive表

create 

4.查看hive表中的数据

cd0afa6d04092f0209ee086d0122d23c.png

如果您跟我一样也看到如此,那说明您搭建成功了,以后就可以仿照这种情况来做了。比如使用hbase来不断的插入数据,然后遇到比较复杂的sql的查询的时候

就可以用hive来写sql做这个事情,相互配合。

将hive表映射到hbase表中

1.创建一张映射hbase的表

  1. create table hive_test(
  2. id string,
  3. name string,
  4. age int,
  5. address string
  6. )STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
  7. WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:name,f2:age,f3:address")
  8. TBLPROPERTIES ("hbase.table.name" = "hbaseFromhive");
  9. 这里的hbaseFromhive表本身hbase没有,也是可以的,他会自动在hbase中创建,所以不再需要在hbase中创建了。

2.向hive表中加载数据

这里有些特殊,向hive表中加载的数据来源于另外一张表中。

比如我们创建一个hive_source表

建表语法:

  1. create table hive_source(
  2. id int,
  3. name string,
  4. age string
  5. address string
  6. )row format delimited fields terminated by 't';

在Linux本地创建了一个order.txt文件写入下面这些内容

  1. 1 zhang 10 M
  2. 2 li 20 F
  3. 3 mei 30 M
  4. 4 wang 40 F
  5. 5 guo 60 M

注意他们之间的间隔用tab来间隔

然后导入到hive_source表中

load data local inpath 'order.txt' into table hive_source;

查看是否导入成功

ddc561a68df0ce4ee2f389a9c5011d1f.png

成功之后导入到hive_test表中

insert into table hive_test select * from hive_source;

3.在hbase中查看是否已经有数据了

e58063008c03dd8cb621e2db2345980f.png

看到这个说明成功了。

总结

以上就是全部内容了,点击关注不迷路哟,后续有文章更新也会推送给您,您有什么问题也可以下方留言。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/78953
推荐阅读
相关标签
  

闽ICP备14008679号