Hive学习(I)

Hive是基于Hadoop之上的数据仓库,本质上也就是一个数据库,是构建在hadoop HDFS上的一个数据仓库

Hadoop和Hive是基于Linux操作系统创建的

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

  • 面向主题:用户使用数据仓库时关注的数据种类,例如商品信息
  • 集成:把分散型的数据集成起来满足一定的要求后存储于数据仓库中
  • 不可更新:主要提供数据查询,不做数据更新,且随时间推移不会发生变化

数据仓库的结构和建立过程:

  • 数据源:业务数据系统、文档资料、其他数据
  • 数据存储及管理:ETL。抽取(Extract)、转换(Transform)、装载(Load)
  • 抽取:把数据源的数据按照一定的方式读取出来
  • 转换:不同数据源的数据格式可能不同,需要按照一定的格式进行转换
  • 装载:将满足格式的数据装到数据仓库中
  • 数据仓库引擎:建立数据仓库后,利用数据仓库引擎向外提供服务。不同的服务器提供不同的服务
  • 前端展示:数据查询、数据报表、数据分析、各类应用

与其他传统基础的数据库【Oracle、Mysql】不同,

Hive是建立在Hadoop HDFS上的数据仓库基础架构,数据存储在HDFS上。

Hive可以用来进行数据提取转化加载(ETL)

Hive定义了简单的类似SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据

允许熟悉MapReduce开发者的开发自定义的mapper和reducer,来处理内建的mapper和reducer,无法完成复杂的分析工作

Hive是SQL解析引擎,将SQL语言转移成M/R job,之后在Hadoop执行

Hive的表其实就是HDFS的目录/文件,Hive表存在HDFS的目录上,Hive数据存在HDFS文件中。

 

Hive的管理:

  • CLI(命令行)方式

     直接输入#<HIVE_HOME>/bin/hive的执行程序 退出用quit

     输入#hive --service cli 退出用exit

     清屏:Ctrl + L或者 ! clear;

     查看数据仓库中的表信息:show tables

     注释: -- + 注释内容

     查看表结构: desc + 表名

     查看HDFS上的文件: dfs -ls + 目录 【以递归方式查看目录及子目录文件 dfs -lsr + 目录】

     执行操作系统的命令:! + 命令 例如 ! pwd 查看当前目录

     执行HQL语句: select *** from ***【Hive将命令转为MapReduce作业,之后在Hadooop上执行。Select * from +表 查询所有信息没有必要转化为MapReduce】

      执行sql文件:source + 目录

     调节为静默模式,不产生MapReduce的调试信息,直接输出最终结果:hive -S

     操作系统执行Hive命令:hive -e ‘语句’【hive -S -e 语句为静默模式】

    【执行Hive命令需要注意语句最后要加分号

  • Web界面方式

     端口号9999

     启动方式:#hive --service hwi

     通过浏览器来访问:http://<IP地址>:9999/hwi/

     【注意需要下载src源代码文件后编译运行产生web界面方式打成war包后更改path文件;注意需要把jdk的jar包拷贝到hive的bin下】

  • 远程服务启动方式

     端口号10000

     启动方式:#hive --service hiveserver【若以JDBC或ODBC的程序登录到hive中操作数据时,必须选用远程服务启动方式,启动Thrift Server】

Hive的数据类型:

Hive -- 数据仓库,本质数据库。可以创建表,列等

基本数据类型——

  • 整数类型:tinyint/smallint/int/bigint
  • 浮点数类型:float/double
  • 布尔类型:boolean
  • 字符串类型:string/varchar/char【varchar表示字符串长度最大为20,char表示长度固定20,及时实际长度没有20也会按照20计算】

复杂数据类型——

  • Array:数组类型,由一系列相同数据类型的元素组成的集合                                                                 

grade为多门科目的成绩用数组

  • Map:集合类型,包含key-value键值对,可通过key来访问元素

多门科目中的一门成绩

多门科目同时表示

  • Struct:结构类型,可包含不同数据类型的元素,这些元素可通过“点语法”的 方式来得到所需要的 元素

多种信息在struct中

时间类型——

  • Date

     查看当前系统时间戳的偏移量:select unix_timestamp()

  • Timestamp

     【Date和Timastamp转换用cast函数】

Hive数据存储:

  • 基于HDFS文件系统
  • 无专门的数据存储格式(文件后缀无所谓)
  • 存储结构主要有:数据库、文件、表、视图
  • 可直接加载文本文件(.txt文件)
  • 创建表时,指定Hive数据的列分隔符与行分隔符
发布了41 篇原创文章 · 获赞 9 · 访问量 9789

猜你喜欢

转载自blog.csdn.net/qq_38586378/article/details/86640078