zoukankan      html  css  js  c++  java
  • 将CDH中的hive和hbase相互整合使用



    一、.hbase与hive的兼容版本:

    hive0.90与hbase0.92是兼容的,早期的hive版本与hbase0.89/0.90兼容,不需要自己编译。

    hive1.x与hbase0.98.x或则更低版本是兼容的,不需要自己编译。

    hive2.x与hbase1.x及比hbase1.x更高版本兼容,不需要自己编译。

    hive 1.x 与 hbase 1.x整合时,需要自己编译

    二、.hbase与hive的整合过程:

        1.修改 hive 的conf目录下 hive-site.xml文件

    <property>
                    <name>hive.zookeeper.quorum</name>
                    <value>node1,node2,node3</value>  
              </property>
              <property>
                    <name>hive.server2.enable.doAs</name>
                    <value>false</value>   
              </property>

    1.可通过Hive -> 操作 -> 下载客户端配置 的方式查看hive-site.xml文件内容,可得知 hive.zookeeper.quorum 配置的内容,默认配置即为 node1,node2,node3 即可。

    2.可得知 hive.server2.enable.doAs 默认为 true,推荐修改为false,否则在使用官方推荐的hiveserver2/beeline的方式操作时,在利用HQL语句创建HBase时可能会出现异常。

    3.可通过Hive -> 配置 -> 搜索栏中搜索 hive.server2.enable.doAs ,默认为勾选,取消勾选即可,即能修改配置为 false。

    再当我们通过Hive -> 操作 -> 下载客户端配置 的方式查看hive-site.xml文件内容,即可查看到hive.server2.enable.doAs已为false

                 

    2.重启 hive、hbase

    3.使用命令 beeline -u jdbc:hive2://node1:10000 -n root 进行连接

    4.HIVE执行创建表语句:hbase表 映射 hive表,写入的数据存储在 hbase表中,"hbase.mapred.output.outputtable"可指定数据写入到hbase表中

    1.create database rimengshe;

    2.use rimengshe;

    3.创建hive表的同时也会创建出hbase表

    # Hive中的表名test_tb;key字段映射hbase表中的rowkey;value字段映射cf1列簇下的val字段

    CREATE TABLE ushio(key int, value string)

    # 指定存储处理器

    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

    # 声明列簇,列名

    WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")

    # hbase.table.name声明HBase表名,为可选属性默认与Hive的表名相同

    # hbase.mapred.output.outputtable指定插入数据时写入的表,如果以后需要往该表插入数据就需要指定该值

    TBLPROPERTIES ("hbase.table.name" = "ushio", "hbase.mapred.output.outputtable" = "ushio");

    3.hbase表中添加数据:put '表名','rowkey值','列簇名:列名','列值'

    put 'ushio','98','cf1:val','val_98'

    put 'ushio','99','cf1:val','val_99'

    put 'ushio','100','cf1:val','val_100'

    4.hive表中添加数据:(会运行yarn)INSERT INTO table_name (field1, field2,...fieldN ) VALUES (value1, value2,...valueN );

    insert into ushio values(2,'ushio');

    5.hbase表 查询表中的所有数据:scan '表名'

    scan 'ushio'

    6.hive表 查询表中的所有数据:

    select * from ushio;

  • 相关阅读:
    【转】验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。
    【转】在控制台、WinForm项目中的嵌入mdf文件的烦恼
    【转】ADB server didn't ACK
    【转】android中AVD的使用
    【转】你不可以不知道的findViewById
    【转】Android中的view
    【转】c# 如何获取项目的根目录
    TYVJ 1452 最大权闭合图
    NOIP 最后的总结
    POJ 2396 有上下界的可行流
  • 原文地址:https://www.cnblogs.com/Raodi/p/11466005.html
Copyright © 2011-2022 走看看