hive(数据仓库工具)

- hive定义

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

- hive安装

  1. 上传tar包 hive-1.2.1.tar.gz

  2. 安装mysql数据库 推荐yum在线安装(运行脚本安装)

  3. 配置hive
    配置hive_home环境变量

    	vim conf/hive-env.sh
     	HADOOP_HOME=/opt/software/hadoop-2.6.5
    

    配置元数据库信息

    vim hive-site.xml
    把光标放到<configuration>这一行,可以进入命令行模式输入:.,$-1d
    然后再插入以下配置信息
    <configuration>
    	<property>
    	<name>javax.jdo.option.ConnectionURL</name>
    	<value>jdbc:mysql://localhost: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>
    </configuration>
    

    安装hive和mysql完成后,将mysql的连接jar拷贝到$HIVE_HOME/lib目录下
    如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)

    没设置密码之前:
    mysql命令  进入mysql
    设置密码:
    set password=password('root')
    设置密码之后:
    mysql -uroot -proot   进入mysql
    

    Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的

    ```
    cp hive/lib/jline-2.12.jar /opt/software/hadoop-2.6.5/share/hadoop/yarn/lib/
    装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
    
    启动hive
    /opt/software/hadoop-2.6.5/bin/hive
    ```
    

- hive命令操作

  1. 导入数据

     ***将本地的数据导入到hive中
     load data local inpath '本地路径' into table 数据库.表;    
     例如:load data local inpath '/root/tes.txt' into table test.usr;
     ***将hdfs集群导入数据
     load data inpath 'hdfs路径' into table 数据库.表;
     例如:load data  inpath 'hdfs://node01:9000/user/tes.txt' into table test.usr;
     ***通过自己写 insert into
    
  2. 创建表

    ***创建内部表
    建表结构:CREATE  TABLE [IF NOT EXISTS] table_name
    create table 表名(
    	字段名1 类型,
    	字段名2 类型
    );
    特点:删除表之后数据全部丢失
    
    ***创建外部表
    建表结构:CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name LOCATION hdfs_path
    create external table 表名(
    	字段名1 类型,
    	字段名2 类型
    );
    特点:只删除metastore的元数据,不删除hdfs中的表数据
    
    
    ***表格式
    ROW FORMAT DELIMITED : 行格式分隔
    FIELDS TERMINATED BY ’,’ : 字段之间使用空格分隔
    COLLECTION ITEMS TERMINATED BY ‘,’ : 集合(就是这的数据)使用逗号分隔
    MAP KEYS TERMINATED BY ‘:’ : 键值对使用冒号分隔
    LINES TERMINATED BY ‘\t’ : 记录之间使用换行符分隔
    
    
    ***表的克隆
    like
    create table 新的表名 like 已有的表名;
    结构一样,但是数据不一样
    
    as
    create table 新的表名 as select * from 已有的表名;    查看几个字段,就赋值几个字段
    结构一样,数据也一样
    

- hive分区

  1. 单分区建表语句
    create table day_table(
    id int,
    content varchar
    ) partitioned by (
    dt varchar
    );
    单分区表,按天分区,在表结构中存在id,content,dt三列,以dt为文件区分。
  2. 双分区建表语句
    create table day_hour_table(
    id int,
    content varchar
    ) partitioned by(
    dt varchar,
    hour varchar
    );
    双区分表,按天和小时区分,在表结构中新增了dt和hour两列,先以dt为文件夹,再以hour子文件夹区分。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值