大数据相关论文我爱编程

Hive基础知识

2018-03-11  本文已影响96人  Sx_Ren

Hive是构建在Hadoop HDFS上得一个数据仓库

数据仓库是一个面向主题的、集成的、不可更新的、随时间不变化的数据集合,它用于支持企业或组织的决策分析处理

搭建数据仓库的时候最基本的两个模型:星型模型和雪花模型(雪花是在星型的基础上发展起来的)

OLTP应用(比如银行转账)、OLAP应用(比如商品推荐系统)

Hive是建立在Hadoop HDFS上的数据仓库
Hive可以用来进行数据抽取转换加载(ETL)
Hive定义了简单的类似SQL的查询语言,称为HQL,它允许熟悉SQL的用户查询数据
Hive允许熟悉MapReduce开发者开发自定义的mapper和reducer来处理内建的maprper和reducer无法完成的复杂的分析工作
Hive是SQL(其实是HQL)解析引擎,他将SQL语句转移成M/R Job,然后在Hadoop执行
Hive的表其实就是HDFS的目录/文件

Hive将元数据存储在数据库中(metastore),支持mysql/derby等数据库
Hive中的元数据包括表的名字、表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等

image.png

解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(Plan)的生成。生成的查询计划存储在HDFS中,并在随后又MapReduce调用执行

image.png image.png

下载apache已发布版(release)安装包网站:http://archive.apache.org/

  1. set hive.fetch.task.conversion=more;

  2. hive --hiveconf hive.fetch.task.conversion=more

  3. 修改hive-site.xml文件
    <property>
    <name>hive.fetch.task.conversion</name>
    <value>more</value>
    </property>

    过滤查询:
    --查询10部门的员工
    select * from emp where deptno=10;
    --查询名叫KING的员工
    select * from emp where ename='KING';
    --查询部门号是10,薪水小于2000的员工
    select * from emp where deptno=10 and sal<2000;
    --模糊查询:查询名字以S打头的员工
    select empno,ename,sal from emp where ename like 'S%';
    --模糊查询:查询名字含有下划线的员工
    select empno,ename,sal from emp where ename like '%\\_%';
    排序:
    -- 查询员工信息:员工号 姓名 月薪 按照月薪排序
    select empno,ename,sal from emp order by sal desc;
    --order by 后面可以跟:列 ,表达式,别名,序号
    select empno,ename,sal,sal12 annsal from emp order by annsal;
    select empno,ename,sal,sal
    12 annsal from emp order by 4;//需要set hive.groupby.orderby.position.alias=true
    --查询员工信息,按照奖金排序(null排序:升序在最前面,降序在最后面)
    select empno,ename,sal,comm from emp order by comm desc;

上一篇下一篇

猜你喜欢

热点阅读