• Hive的安装和建表


    认识Hive

    Hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL去查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉MapReduce用户很方便地利用SQL语言查询、汇总、分析数据。

    1. 解压

    tar -zxvf hive-0.9.0.tar.gz -C /home/hadoop/app
    

    2. 配置mysql metastore(切换到root用户)

    • 安装MySQL

    
    ##rpm包安装
    rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm 
    rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm
    
    ##若安装过程出现依赖库冲突,按照以下步骤解决(以冲突库mysql-libs-5.1.66-2.el6_3.i686为例)
    ##解决依赖包冲突
    ##查出冲突库
    rpm -qa | grep mysql
    
    ##删除冲突库
    rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps
    
    
    • 修改MySQL密码

    执行/usr/bin/mysql_secure_installation

    (注意:删除匿名用户,允许用户远程连接)

    • 进行登录

    3. 配置hive

    复制hive-default.xml.template文件并改名为 hive-site.xml,删除hive-site.xml所有内容,并添加如下内容:

    <!-- 指定连接数据库hive,不存在则创建 -->
    <property>
         <name>javax.jdo.option.ConnectionURL</name>
         <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
         <description>JDBC connect string for a JDBC metastore</description>
       </property>
    <!-- 指定数据库驱动 -->
       <property>
         <name>javax.jdo.option.ConnectionDriverName</name>
         <value>com.mysql.jdbc.Driver</value>
         <description>Driver class name for a JDBC metastore</description>
       </property>
    <!-- 指定数据库用户名 -->
       <property>
         <name>javax.jdo.option.ConnectionUserName</name>
         <value>root</value>
         <description>username to use against metastore database</description>
       </property>
    <!-- 指定数据库密码 -->
       <property>
         <name>javax.jdo.option.ConnectionPassword</name>
         <value>root</value>
         <description>password to use against metastore database</description>
       </property>
    

    4. 安装hive和mysq完成后,将MySQL的连接jar包拷贝到$HIVE_HOME/lib目录下

    如果出现没有权限的问题,在MySQL授权(在安装mysql的机器上执行)

    ## 使用root登录mysql
    mysql -u root
    
    ##赋予所有表上的权限给root用户,*.*表示所有库下的所有表,%表示所有的主机都可以访问,密码是root
       
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
    ##或者
    grant all on *.* to root@'主机名' identified by 'root';
    
    

    5. 建表

    Hive中的一张表对应HDFS上的一个文件夹,一个分区对应文件中的子文件夹,外部表只是指向某一文件数据,删除外部表不会删除文件。

    • 启动hive

      在hive安装目录的bin目录下执行./hive
    • 默认是内部表

     #创建数据库
     CREATE DATABASE test;
     
     #选择刚创建的数据库
     USE test;
     
     #创建表
    CREATE TABLE IF NOT EXISTS control_20180815(ordertime STRING, userid STRING, songIndex INT, songid STRING, presource INT)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
    LINES TERMINATED BY '
    ';
    
    #载入数据
    #将本地数据文件装载刚创建的表
    #本地数据文件里的数据格式要符合hive表创建时的描述,上面创建时字段分隔符为|,行分隔符为
    
    LOAD DATA LOCAL INPATH '/home/lmh/testModel/control-20180815' OVERWRITE INTO TABLE control_20180815;
    
    #将表格数据导出到本地
    #可以自定义导出时的字段分隔符和行分割符
    insert overwrite local directory '/home/lmh/testModel/myexpofen-20180815'  
    row format delimited fields terminated by '|' 
    select * from myexpofen_20180815;
    
    
    • 建分区表

    create table td_part(id bigint, account string, income double, expenses double, time string) partitioned by (logdate string) row format delimited fields terminated by '	';
    
    • 建外部表

    create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '	' location '/td_ext';
    

    6. 创建分区表

    • 普通表和分区表区别:有大量数据增加的需要建分区表

    create table book (id bigint, name string) partitioned by (pubdate string) row format delimited fields terminated by '	'; 
    
    • 分区表加载数据

    ##将文本文件book.txt导入book表中
    load data local inpath './book.txt' overwrite into table book partition (pubdate='2010-08-22');
       
    load data local inpath '/root/data.am' into table beauty partition (nation="USA");
    
    select nation, avg(size) from beauties group by nation order by avg(size);
    
  • 相关阅读:
    mapreduce参数记录
    find命令使用中记录
    运算符的优先级(从高到低)
    常用字符与ASCII代码对照表
    mysql在liunx上使用记录
    Java 流收集器 ( Stream Collectors )
    CDH 删除Agent节点(退役节点)
    学习记录CombineFileInputFormat类
    读取HBases的数据的三种常见用法
    hash算法学习
  • 原文地址:https://www.cnblogs.com/liminghuang/p/9524472.html
Copyright © 2020-2023  润新知