Hive介绍

Hive简单介绍. Hive是构建在Hadoop上的数据仓库框架. Hive设计的目的是让精通SQL的分析师对HDFS中的大规模数据进行查询. 安装Hive. Hive把数据组织为表。
展开查看详情

1.Hive 简介 陈银银

2.主要内容 •安装 Hive •Hive 示例 •运行 Hive •Hive 与传统数据库比较 •HiveQL •表 •查询数据 •用户定义函数

3.Hive 简单介绍 Hive 是构建在 Hadoop 上的数据仓库框架 Hive 设计的目的是让精通 SQL 的分析师对 HDFS 中的大规模数据进行查询

4. 安装 Hive Hive 把数据组织为表,对储存在 HDFS 中的数据赋予结构 安装环境: Java6 , Cygwin(Windows) 解压缩 : 路径设置 : 启动 Hive 的 Shell :

5.Hive 外壳环境 Hive 交互、发出 HiveQL 命令的主要方式 第一次启动 : 非交互模式执行命令脚本:

6.Hive 外壳环境 生成单行表的方法: 取消打印 Hive 运行信息: 其他 Hive 外壳程序特性: 用 a! 运行宿主操作系统命令 用 dfs 命令访问 Hadoop 文件系统

7.示例 Hive 将数据组织成表: Hive 输入数据:

8.示例 Hive 执行查询: Hive 优势: 将查询转换为 MapReduce 作业

9.配置 Hive conf 目录: •hivesite.xml :设置 Hive 运行时的选项 •hive-default.xml: 记录 Hive 使用的选项和默认 值 -config 选项参数: ( 指定包含 hive-site.xml 文件的目录 ) 设置 HIVE_CONF_DIR 环境变量: ( 效果同上 )

10.配置 Hive 关于 hive-site.xml :储存详细的集群链接信息  Hadoop:  fs.default.name 和 mapred.job.tracker 来设置文件系统和 jobtracker  Metastore 选项设置 Hive 为单个会话设置属性: 多个 Hive 用户共享一个 Hadoop 集群:

11.配置 Hive SET 命令更改设置: ( 对特定的查询修改 Hive 或 MapReduce 作业设置很有用 ) SET-V 可列出系统中所有属性,包括 Hadoop 默认值 设置的优先级: 1.Hive SET 命令 2. 命令行 -hiveconf 选项 3.hive-site.xml 4.hive-default.xml 5.hadoop-site.xml(core-site.xml 、 hdfs-site.xml 、 mapred-site.xml) 6.hadoop-default.xml(core-default.xml 、 hdfs-default.xml 、 mapred- default.xml)

12.日志 Hive 错误日志:  /temp/$USER/hive.log  对于诊断配置问题和其他错误非常有用 日志配置文件:  conf/hive-log4j.properties  修改日志的级别和日志相关设置 在会话中对日志配置进行设置:

13.Hive 服务 -service 选项指明要使用哪种服务 hive-servicehelp 获得可用服务列表

14.Hive 客户端

15.Hive 客户端 Thrift 客户端 : •简化了在多种编程语言中运行 Hive 命令。 •Hive Thrift 绑定支持: • C++ • Java • Php • Python • Ruby •在 Hive 发布版本的 src/service/src 子目录下可以找到 Thrift 绑定

16.Hive 客户端 JDBC 驱动 : • 纯 Java • 定义在 org.apache.hadoop.hive.jdbc.HiveDriver 类 配置 JDBCURI: • Jdbc:hive://host:port/dbname • 可在指定的主机和端口连接到另一个进程的 Hive 服务器 • 驱动使用 Java 的 Thrift 绑定来调用 Hive Thrift 客户端实现的接口 JDBC 内嵌模式连接 Hive :  Hive 和应用程序在同一个 JVM 中运行  并不使用 Thrift 服务或 Hive 的 Thrift 客户端

17.Hive 客户端 ODBC 驱动 : 与 JDBC 驱动类似,使用 Thrift 和 Hive 服务器进行通信

18.metastore Hive 元数据的集中存放地 metastore 包括:  服务  后台数据的储存 内嵌 metastore 配置: metastore 服务和 Hive 服务运行在一个 JVM 包含一个以本地磁盘为储存的 Derby 数据库 缺点: 每次只能为每个 metastore 打开一个 Hive 会话 打开第二个报错: Failed to start database ‘metastore_db’

19.metastore 本地 metastore : 支持多会话 metastore 与 Hive 运行在同一个 JVM 数据库在另一个进程

20.metastore 本地 metastore 数据库设置

21.metastore 远程 metastore : metastore 与 Hive 运行在不同的进程 数据库层置于防火墙后 客户端不需要用户名和密码

22.和传统数据库比较 写时模式:  传统数据库采用  数据在写入时对照模式进行检查  有利于提升查询性能 读时模式:  Hive 采用  数据验证在查询时进行  数据加载操作仅为文件的复制或移动

23.更新、事务和索引 对于大规模的数据集上运行的数据仓库很有效 Hive 并没有对表的并发访问定义清楚语义 需要自己实现应用层的并发访问或加锁机制

24.HiveQL HiveQL : MySQL 的 SQL 方言,并不完全支持 SQL-92 标准

25.HiveQL

26.数据类型 Hive 支持:  原子数据类型: int , bool , string  复杂数据类型: array , map , struct

27.基本类型 Hive 只支持原子数据类型的一小部分

28.类型转换 Hive 隐式转换:  任何整数都能隐式转换为一个范围更广的类型: TINYINTINT  所有整数类型、 FLOAT 和 STRING 都能转换为 DOUBLE  TINYINT 、 SMALLINT 和 INT 都能转换为 FLOAT  BOOLEAN 类型不能转换为其他任何类型 Hive 显式转换: CAST  CAST(‘1’ AS INT)  转换失败返回 NULL

29.复杂类型 创建: 查询: