hive数据仓库(hive数据仓库案例教程答案)
本篇文章给大家谈谈hive数据仓库,以及hive数据仓库案例教程答案对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
Hive 数据库表的基本操作,必须掌握的基本功
说明:hive 的表存放位置模式是由 hive-site.xml 当中的一个属性指定的,默认是存放在该配置文件设置的路肆如径下,也可在创建数据库时单独指定存储路径。
数据库有一些描述性的属性信息,可以在山雹卜创建时添加:
查看数据库的键值对信息
修改数据库的键值对信息
与mysql查询语句是一样的语法
删除一个空数据库,如果数据库下面有数据表,那么就会报错
强制删除数据库,包含数据库下面的表一起删除(请谨慎操作)
[]里的属性为可选属性,不是必须的,但是如果有可选属性,会使 sql 语句的易读性更好,更标准与规范。
例如:[comment '字段注释信息'][comment '表的描述信息']等,[external]属性除外
1. CREATE TABLE
创建一个指定名字的表,如果相同名字的表已存在,则抛出异常提示:表已存在,使用时可以使用IF NOT EXISTS语句来忽略这个异常。
如果创建的表名已存在,则不会再创建,也不会抛出异常提示:表已存在。否则则自动创建该表。
2. EXTERNAL
顾名思义是外部的意思,此关键字在建表语句中让使用者可以创建一个外部表,如果不加该关键字,则默认创建内部表。
外部表在创建时必须同时指定一个指向实际数据的路径(LOCATION),Hive在创建内部表时,会将数据移动到数据仓库指向的路径;
若创建外部表,仅记录数据所在的路径,不对数据的位置作任何改变。
内部表在删除后,其元数据和数据都会被一起删除。
外部表在删除后,只删除其元数据,数据不会被删除。
3. COMMENT
用于给表的各个字段或整张表的内容作解释说明的,便于他人理解其含义。
4. PARTITIONED BY
区分表是否是分区表的关键字段,依据具体字段名和类型来决定表的分区字段。
5. CLUSTERED BY
依据column_name对表进行分桶,在 Hive 中对于每一张表或分区,Hive 可以通过分桶的方式将数据以更细粒度逗穗进行数据范围划分。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。
6. SORTED BY
指定表数据的排序字段和排序规则,是正序还是倒序排列。
7. ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
指定表存储中列的分隔符,这里指定的是' ',也可以是其他分隔符。
8. STORED AS SEQUENCEFILE|TEXTFILE|RCFILE
指定表的存储格式,如果文件数据是纯文本格式,可以使用STORED AS TEXTFILE,如果数据需要压缩,则可以使用STORED AS SEQUENCEFILE。
9. LOCATION
指定 Hive 表在 hdfs 里的存储路径,一般内部表(Managed Table)不需要自定义,使用配置文件中设置的路径即可。
如果创建的是一张外部表,则需要单独指定一个路径。
1. 使用create table语句创建表
例子:
2. 使用create table ... as select...语句创建表
例子:
使用 create table ... as select ...语句来创建新表sub_student,此时sub_student 表的结构及表数据与 t_student 表一模一样, 相当于直接将 t_student 的表结构和表数据复制一份到 sub_student 表。
注意:
(1). select 中选取的列名(如果是 * 则表示选取所有列名)会作为新表 sub_student 的列名。
(2). 该种创建表的方式会改变表的属性以及结构,例如不能是外部表,只能是内部表,也不支持分区、分桶。
如果as select后的表是分区表,并且使用select *,则分区字段在新表里只是作为字段存在,而不是作为分区字段存在。
在使用该种方式创建时,create 与 table 之间不能加 external 关键字,即不能通过该种方式创建外部目标表,默认只支持创建内部目标表。
(3). 该种创建表的方式所创建的目标表存储格式会变成默认的格式textfile。
3.使用like语句创建表
例子:
注意:
(1). 只是将 t_student 的表结构复制给 sub1_student 表。
(2). 并不复制 t_student 表的数据给 sub1_student 表。
(3). 目标表可以创建为外部表,即:
[img]hadoop和hive之间有什么关系?
hive是hadoop的延申。
hadoop是一个分布式的软件处理框架,hive是一个提供了查询功能的数据仓库,而hadoop底层的hdfs为hive提供了数据存储。
hive将用户提交的SQL解析成mapreduce任务供hadoop直接运行,结合两者的优势,进行数据决策。一个擅长大数据并行计算,一个支持SQL数据查询,方便是显而易见的。但hive只要还是读操作
有了Hive之后,人们发现SQL对比Java有巨大的优势。一个是它太容易写了。刚才词频的东西,灶举正用SQL描述就只有一两MapReduce写起来大约要几十上百行。
扩展资料:
它主要有以下几个优点 :
1、高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖 。
2、高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中 。
3、高效答数性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
4、高容错性。Hadoop能够自动保存数隐悔据的多个副本,并且能够自动将失败的任务重新分配。
低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低 。
Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++ 。
Hive内部表、外部表、分区表、桶表概述
Hive是基于Hadoop的一个数据仓库,可以将结构化的数据文件映射为一张表,并提供类sql查询功能,Hive底层将sql语句转化为mapreduce任务运行。Hive是一个数据仓库,不支持行级插入、更新以及删除操作。Hive共有四种表,分别是内部表、外部表、分区表和桶表。
1. 内部表
内部表有时也被称为管理表。这种表会控制着数据的生命周期,Hive默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir所定义的目录的子目录下。当我们删除内部表时,同时会删除这个表中的数据。内部表不方便与其他工具共享数据。
创建一个内部表可以用如下语句:
2. 外部表
外部表指向特定目录的一份数据,Hive并不对该数据具有所有权。当删除表时,不会删除该目录下的数据,数据可以被多个工具共享。即外部表只是对数据进行逻辑管理,创建一个外部表需要用external关键字:
3. 分区表
分区表是一种内部表。分区表通过指定一个或多个partition key,决定数据存放方式,进而优化数据的查询。每个表可以指宏庆凳定多个partition key,每个partition在hive中以文件夹的形式存在。如下所示是对数据的年份进行分区,每个年份对应一个文件夹,年份相同的数据会放到同一个文件夹下:
创建分区表时要注差败意开启允许动态分区设置,必要蔽旅的时候还需要设置允许创建的最大分区数。
创建分区表可以用以下语句:
4. 桶表
桶表也是内部表,桶表是对某一列的数据进行哈希取值以将数据打散,然后放到不用文件中存储。在Hive分区表中,分区中的数据量过于庞大时,建议使用桶。在分桶时,对指定字段的值进行hash运算得到hash值,并使用hash值除以桶的个数取余进行分桶。分桶后的查 询效率比分区后的查询效率更高。下图是按照年份分区,再按id进行分桶后的结构:
建表语句:
end!
数据仓库Hive
一个公司里面不同项目可能用到不同的数据源,有的存在MySQL里面,又的存在MongoDB里面,甚至还有些要做第三方数据。
但是现在又想把数据整合起来,进行 数据分析 。此时数据仓库(Data Warehouse,DW)就派上用场了。它可以对多种业务数据进行筛选和整合,可以铅埋梁用于数据分析、数据挖掘、数据报表。
总的来说,数据仓库是将多个数据源的数据按照一定的 主题 集成起来,因为之前的数据各不相同,所以需要 抽取、清洗、转换 。
整合以后的数据不允许随便修改,只能分析,还需要定期更新。
上面我们说过,数据仓库接收的数据源是不同的,要做集成的话,需要 抽取、清洗、转换 三个步骤,这就是 ETL (Extract-Transform-Load)
国内最常用的是一款基于Hadoop的开源数据仓库,名为 Hive ,它可以对存储在 HDFS 的文件数据进行 查询、分析 。
Hive对外可以提供HiveQL,这是类似于SQL语言的一种查询语言。在查询时可以将HiveQL语句转换为 MapReduce 任务,在Hadoop层进行执行。
Hive的最大优势在于 免费 ,那其他知名的商业数据仓库有那些呢?比如Oracle,DB2,其中业界老大是 Teradata
Teradata数据仓库支持大规模并行处理平台(MPP),可以高速处理海量实际上,性能远远高于Hive。对企业来说,只需要专注于业务,节省管理技术方面的精力,实现ROI(槐运投资回报率)最大化。
上面提到了Hive是最著名的开源数据仓库,它是Hadoop生态中一个重要的组件。
Hadoop的生态中,HDFS解决了分布式存储的问题,MapReduce解决了分布式计算的问题,而HBASE则提供了一种NoSQL的存储方法。
但是如果需要的HDFS上的文件或者HBASE的表进行查询,需要自定义MapReduce方法。那么Hive其实就是在HDFS上面的一个中间层,它可以让业务人员直接使用SQL进行查询。
所以Hive是用进行数据提取转换加载的,而且它可以把SQL转换为MapReduce任务,而Hive的表就是HDFS的目录或者文液乱件。
上图为Hive的体系结构
Hive主要包含以下几种数据模型:
本文为 什么是数据仓库? 的笔记
大数据Hive仓库是什么?
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一信裤张表,和没并提供类SQL查询功能;其本质是将HQL转化成MapReduce程序。
构建在Hadoop之上的数据仓库:
使用HQL作为查询接口
使用HDFS存储
使用MapReduce计算
灵活性和扩展性滑棚简比较好:支持UDF,自定义存储格式等:
适合离线数据处理
关于hive数据仓库和hive数据仓库案例教程答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。