美文网首页
Hive实战

Hive实战

作者: 大龄程序员在帝都 | 来源:发表于2017-05-17 08:55 被阅读300次

上一节讲述了Hive的基于mysql作为元数据存储的安装

这一节讲解Hive的实战操作
首先要了解hive的数据类型和数据模型
这些可以参考Hive的官方文档

1、Hive创建表并从本地文件导入数据
hive创建表分类

hive的表逻辑上由存储的数据和描述表格中的数据形式的相关元数据组成。表存储的数据存放在分布式文件系统里,例如HDFS,元数据存储在关系数据库里,当我们创建一张hive的表,还没有为表加载数据的时候,该表在分布式文件系统,例如hdfs上就是一个文件夹(文件目录)。Hive里的表有两种类型一种叫托管表,这种表的数据文件存储在hive的数据仓库里,一种叫外部表,这种表的数据文件可以存放在hive数据仓库外部的分布式文件系统上,也可以放到hive数据仓库里(注意:hive的数据仓库也就是hdfs上的一个目录,这个目录是hive数据文件存储的默认路径,它可以在hive的配置文件里进行配置,最终也会存放到元数据库里)

hive创建表

create table test(col string);

在本地创建一个文件test里面保存数字
1、2、3、4、5

image.png

本地文件装载到hive表中

Load data local inpath '/home/test/test' into table test;

查询hive表

image.png

在hive的数据仓库中会有对应的文件夹信息,理论上一张表对应一个文件夹

image.png

创建外部表,并装载数据

create external table test_external(col string)  Location '/home/hadoop/external_table';

Load data local inpath '/home/test/test' into table test_external;
创建外部表并装载数据

以上两个操作的区别:

创建外部表时候table之前要加关键字external,同时还要用location命令指定文件存储的路径,如果不使用locaction数据文件也会放置到hive的数据仓库里。
这两种表在使用的区别主drop命令上,drop是hive删除表的命令,托管表执行drop命令的时候,会删除元数据和存储的数据,而外部表执行drop命令时候只删除元数据库里的数据,而不会删除存储的数据。
表的load命令,hive加载数据时候不会对元数据进行任何检查,只是简单的移动文件的位置,如果源文件格式不正确,也只有在做查询操作时候才能发现,那个时候错误格式的字段会以NULL来显示。

分区概念:

分区(partition):hive里分区的概念是根据“分区列”的值对表的数据进行粗略划分的机制,在hive存储上就体现在表的主目录(hive的表实际显示就是一个文件夹)下的一个子目录,这个文件夹的名字就是我们定义的分区列的名字,没有实际操作经验的人可能会认为分区列是表的某个字段,其实不是这样,分区列不是表里的某个字段,而是独立的列,我们根据这个列存储表的里的数据文件。使用分区是为了加快数据分区的查询速度而设计的,我们在查询某个具体分区列里的数据时候没必要进行全表扫描。下面我就举一个分区使用的实例:

注意分区列是独立的列,而不是某个字段

如下建立一张登陆日志表,根据日期分区

create table login_log(uuid bigint,ip string) partitioned by(dt string) row format delimited fields terminated by ',' stored as textfile;

在/home/test/login_log.txt中添加如下数据

10002,106.15.56.23
10008,110.23.56.45

执行导入操作:

load data local inpath '/home/test/login_log.txt' overwrite into table login_log partition (dt=20170517);

导入成功以后进行查询验证,就可以看到对应的结果了

select * from login_log;

Hive交互式命令模式
Hive交互式命令模式常用命令

相对复杂的结构导入到hive

image.png

hive load数据参考
hive cli进行的一些操作
hive reference
hive参考

相关文章

  • Hive的条件函数与日期函数全面汇总解析

    在Hive的开窗函数实战的文章中,主要介绍了Hive的分析函数的基本使用。本文是这篇文章的延续,涵盖了Hive所有...

  • hive实战

    1.前言 作为数据仓库的工具,hive提供了两种ETL运行方式,分别是通过Hive 命令行和beeline客户端;...

  • Hive实战

    上一节讲述了Hive的基于mysql作为元数据存储的安装 这一节讲解Hive的实战操作首先要了解hive的数据类型...

  • Hive实战笔记

    继Python爬虫实战之后,又开始学习Hive,做大数据分析必备技能如果你也正在转行大数据分析师,来跟我一起学吧u...

  • Hive with Spark 实战

    前言 由于我司的系统已存在稳定的Hive on Hadoop集群以及Spark集群,随着业务发展,需要打通这两者,...

  • [实例]分析广告日志时 有多维分析的需求

    【Kylin实战】Hive复杂数据类型与视图 - Treant - 博客园http://www.cnblogs.c...

  • Hive 大表数据导入 HBase

    本文简单介绍 HBase 的数据导入工具 ImportTSV 。通过一次将 hive 大表导入 HBase 的实战...

  • Practical Hive - 2016.pdf Hive实战

    Practical Hive - 2016.pdf Hive“出身名门”,是最初由Facebook公司开发的数据仓...

  • Hive日志分析实战

    对日志进行分析思路 日志内容格式 注意440 后面的- 没有被引号包围。创建 创建利用正则格式化数据的表 CREA...

  • HIVE操作基础实战

    hive是基于Hadoop的一个数据仓库工具,提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的...

网友评论

      本文标题:Hive实战

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