初学hive的配置及使用

1.1 什么是 Hive

  • Hive 由 Facebook 实现并开源,是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供 HQL(Hive SQL)查询功能,底层数据是存储在 HDFS 上。
  • Hive 本质: 将 SQL 语句转换为 MapReduce 任务运行,使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,是一款基于 HDFS 的 MapReduce 计算框架
  • 主要用途:用来做离线数据分析,比直接用 MapReduce 开发效率更高

1.2 Hive的配置

对于初学者来使用hive来说,主要的问题在于mysql的初始化和hive的配置文件填写错误,需要注意的有

  • 将jdbc下载后,放到hive的lib文件夹里
  • 让mysql允许远程访问,hive才可以连接
  • 配置hive-site.xml时,这个文件需要自己新建,这是在下载好的hive默认配置文件中,要求的在这里插入图片描述
  • 最后是配置连接mysql时需要注意的CoonectionURL里注意是连接的本机的mysql还是hadoop集群中的,这里是hadoop里的node1,如果你是连接的本地的mysql,则改为localhost后连接mysql
    在这里插入图片描述
    hive的配置具体过程参考

1.3 Hive的使用

  • Hive 利用 HDFS 存储数据,利用 MapReduce 查询分析数据。

  • Hive是数据仓库工具,没有集群的概念,如果想提交Hive作业只需要在hadoop集群 Master节点上装Hive就可以了

  • Hive不会对装载的比如student.txt做任何格式处理,因为Hive本身并不强调数据的存储格式

创建一个内部表,设置分隔符为’,’
CREATE TABLE students(classNo string, stuNo string, score int) row format delimited fields terminated by ',';
在hive之外新建一个txt文件,内容为:
C01,N0101,82
C01,N0102,59
C01,N0103,65
C02,N0201,81
C02,N0202,82
C02,N0203,79
C03,N0301,56
C03,N0302,92
C03,N0306,72
然后将文件载入到hive中inpath后面接你的文件在本机的地址
load data local inpath '/home/hadoop/tmp/student.txt'overwrite into table student;
使用select可以查到表的内容
在这里插入图片描述

这个命令将student.txt文件复制到hive的warehouse目录中,这个目录由hive.metastore.warehouse.dir配置项设置,默认值为/user/hive/warehouse,使用hadoop fs -ls /user/hive/warehouse从hadoop中查看hive中的所有表的文件
在这里插入图片描述
在hive中使用show tables 可以看到一样的表,总的来说就是hive中建的表中的内容都可在/user/hive/warehouse这个目录中找到,我们引出分区表
在这里插入图片描述
分区表就是将表的内容分成不同的区域,patitioned by 后面是分区的字段名字和类型

create table employee (name string,salary bigint) partitioned by (date1 string) row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile;

分区表要先添加分区,再添加数据,分区实际上在表目录下新建的分区文件来存储

  • 添加分区
alter table employee add if not exists partition(date1='2018-12-01');
  • 添加数据
load data local inpath '/home/hadoop/tmp/employee.txt' into table employee partition(date1='2018-12-01');

hive的内部表和外部表在这里插入图片描述
外部分区表
即使有分区的目录结构, 也必须要通过hql添加分区, 才能看到相应的数据

alter table emp add if not exists partition(dt='2018-12-04');

设置动态分区

set hive.exec.dynamic.partition.mode=nonstrict;

动态分区导入数据

insert into table employee2 partition(date1) select name,salary,date1 from employee
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值