hive sql 两个字段想减_学习数据仓库Hive

数据分析引擎:hive

大数据的终极目标:使用SQL语句来处理大数据 

1,hadoop的体系架构中:

 两个数据分析引擎:(*)Hive:支持sql

                           (*)Pig:支持PigLatin

 一,什么是hive?

1,hive是一个基于hdfs之上的数据仓库

  hive                hdfs

  表                   目录

  数据                文件

  分区表            目录

  分桶                文件

2,hive是基于hadoop之上的一个数据分析引擎

也就是说Hive是一个翻译器(hive 2.x以前:sql语句由hive编译成mr,hive2.x以后:sql语句由hive编译成spark程序)

 3,hql是sql的一个子集,不完全支持sql

 二,hive的体系架构

    hive是基于在hdfs之上的,数据也是存在于我们的从节点Datanode上面的。

    第一种方式:我们可以通过cli命令行写sql语句,然后由Hive Driver转换成MR任务去处理数据

    第二种方式:通过jdbc的方式,需要指定url确定访问地址,而且需要通过中间人(1.x Thrift server 2.x HiveServer2  端口都是10000)把sql语句提交给我们的hiveDriver驱动

    第三种方式 基于网页去执行sql,用HWI(Hive Web Interface只有hive2.2版本以前才提供,2.2之后使用HUE去使用)去提交sql到HiveDriver上去运行.

    注意:hive架构中元数据要单独存储在数据库中(推荐使用mysql去存储),通过读取mysql数据库中存储的hive元数据得到hive里面存储的真正的数据(数据模型),

因为hive元数据存储了hive的表名、列名、列的类型 、分区、分桶、其他信息.

三,hive的数据模型

1,内部表:类似于Mysql,Oracle里面的表

2,外部表:只定义表结构,真正的数据存储在hdfs的某个目录上。可以通过查看外部表的方式查看到这一个路径下所有的表信息

3,分区表:提升性能(按部门分区)

     你可以按某个字段去分区,比如你有张员工表,表里肯定有部门号,按照部门号分区,也就是把属于同一个部门的员工放在一张表里管理,那么在查询的时候就可以只扫描这张表,从而提升效率

 4,分桶表:类似hash分区,判断某个字段值的hash是否一样,一样的话分一个桶。

    例如:我们还是拿员工表举例,取部门号的hash值,把所有数据的部门hash值一样的数据分在一个桶(桶是以文件形式存在的,区是以目录形式存在的)里面。

 5,视图

    视图的存在是为了简化复杂的查询,就是将复杂的sql结果保留成视图,下次直接查询视图就可以得到结果。比如你把查询部门号为10的员工保留成视图,下次直接查询视图就可得到结果

6700dfc8d35cc638a01574deba90940c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值