Hive

作者: _duangduang | 来源:发表于2018-03-16 16:12 被阅读0次

一、基本原理

Hive是基于Hadoop的一个数据仓库工具,可以将结构化数据文件映射成一张表,并提供类似SQL的查询功能。Hive适用于大数据离线批处理,不适合实时处理,分为内部表、外部表,可对表进行分区、分桶,提升查询效率。

(1)Hive不提供实时更新,只支持向现有的表中追加数据。

(2)Hive不存储数据,只提供SQL的解析,将SQL转化为MapReduce任务,提交到Yarn上,数据存在在HDFS中。

(3)Hive中表有分区表、分桶表,分区可按时间、地域等分区,但避免分区太细,产生过多小文件;分桶表需要先定义桶的个数,每行取哈希值再对桶个数取余,决定分到哪个桶中。分桶表相比分区表,将数据划分的更细,查询效率更高。

(4)文件存储:

TEXTFILE(默认),行存储

SequenceFile:二进制键值对序列化存储,行存储

列存储

(5)数据类型:除基本数据类型外(参考mysql),还提供复杂数据类型:数组Array、Map、Struct自定义数据结构存储。(定义与查询参考文件示例)

二、Hive配置安装

Hive中元数据默认存在 derby数据库中,生产中一般用mysql;元数据包括有哪些数据库、数据库中有哪些表、表结构等信息。

安装过程中,需要注意修改hive-sive.xml,配置数据库的基本信息

注意:Hive使用环境变量HADOOP_HOME来制定Hadoop的所有相关JAR和配置文件。 (通过环境变量找到hadoop相关环境和配置),所以安装hive不需要在本身的配置文件中再次Hadoop环境。

三、基本操作

创建数据库:create database name;

创建表:

create table user_info(

user_id string,

area_id string,

age int,

occupation string

)

row format delimited fields terminated by '\t'    //存储时字段间以 \t 分隔

lines terminated by '\n'

stored as textfile;

删除表:drop table user_info;

其他内部表、外部表操作见文件示例。

数据库在HDFS中存储路径:hadoop fs -ls /user/hive/warehouse/name.db  ;内部表会在该路径生成相应的表级目录文件。

内部表与外部表的区别:存储路径不一样,外部表需要指定存储路径,内部表使用默认路径;删除外部表时,数据再hdfs上还存在,仅删除表元数据信息。删除内部表时,数据再hdfs上也被删除。生产中一般使用外部表。

表中添加数据,常用方式:

(1)使用load从本地加载数据到表student_info:

load data local inpath '/home/hadoop/apps/hive_test_data/student_info_data.txt' into table student_info;

(2) 使用load将hdfs文件加载到student_info表中

load data inpath '/student_info_data.txt'  (overwrite )into table student_info;

overwrite into table,以覆盖方式添加

into table,以追加方式添加

(3) insert into table a  select * from b;

这个会转化成一个mapreduce任务,提交到yarn上运行,所以需要yarn相关服务起来,这个sql才能执行。

外部表:hdfs直接把数据put到相应目录下,就可以查到了;分区表除外,如果表未分区表,需要手动建立分区,才能查询到数据(alter table student_school_info_external_partition add partition(school_year='2017');

内部表:需要hdfs put 到一个目录下,再用load加载到 默认路径下,才可以select到吧。。。。?

hive导出数据:

hive -e “select **”  > ./result.txt

hive 的各种join操作。。 

不支持单条数据的更新操作,insert 操作 -> MR 

四、高级操作

Hive提供的内置函数若无法满足业务需求,可自定义UDF函数。

步骤见文档。

distribute by,group by ,sorted by, order by 区别。。

相关文章

  • 数据仓库Hive

    Hive产生背景 Hive概述 HIve体系架构 Hive部署架构 Hive和RDBMS区别 Hive部署以及快速...

  • 数据查询-Hive基础

    outline 什么是Hive 为什么需要Hive Hive的架构 Hive的常用操作 什么是Hive Hive由...

  • 大数据知识 | hive初识

    hive简介 hive架构 hive是什么 官网这样说:https://hive.apache.org/ hive...

  • Hive | Hive 安装详解

    一、Hive 介绍 二、准备工作 三、Hive下载 四、Hive 安装 五、Hive 启动 一、Hive 介绍 H...

  • Hive日常使用

    hive 创建表: hive 执行: =========================hive 调用Python...

  • Hive常用的几种交互操作

    查看hive下的交互命令方式 -help(hive 外) 命令:bin/hive -helpusage: hive...

  • 【Hive】

    Hive的安装 Hive官网地址 http://hive.apache.org/[http://hive.apac...

  • Hive进阶

    hive配置,命令 hive查询显示列名 hive默认分隔符 \001 hive命令行中查看当前hive环境变量 ...

  • Hive 入门

    Hive官网 Hive概述 Hive 的底层执行引擎有 :MapReduce,Tez,Spark- Hive on...

  • 大数据开发之Hive优化篇2-Hive的explain命令

    备注:Hive 版本 2.1.1 一.Hive explain命令概述 Hive的explain命令用来看Hive...

网友评论

    本文标题:Hive

    本文链接:https://www.haomeiwen.com/subject/fbylqftx.html