Apache Hive中的表类型–快速概述
我花了超过五年的时间与大数据技术堆栈合作,并为各个领域的客户提供咨询服务。我注意到的一件事是Hive在整个业务领域中用作仓库解决方案的频率。
在学习Apache Hadoop时,您根本不能忽略Apache Hive。
阿帕奇蜂巢
Hive是大型Hadoop生态系统的一部分,可让您为驻留在HDFS中的大数据提供架构。你们中的大多数人都将了解RDBMS及其表。我们经常使用它们,以至于它已成为我们生活的一部分。这就是问题– Hive中的表没有什么不同。
您是否想过Hive中可能有哪些不同类型的表?这就是我们将在本文中讨论的内容!
目录
什么是Apache Hive?
Apache Hive#1中的表类型:托管表
Apache Hive#2中的表类型:外部表
托管表与外部表–有何区别?
识别Apache Hive表的类型
什么是Apache Hive?
Apache Hive是用于Apache Hadoop的数据仓库系统。它为HDFS中的数据提供类似于SQL的访问,因此Hadoop可用作仓库结构。Hive允许您在很大程度上非结构化的数据上提供结构。定义结构后,无需使用Java或Map Reduce即可使用Hive查询数据。
Hive查询语言(HQL)具有与关系数据库中的标准SQL相似的语义和功能,因此经验丰富的数据库分析师可以轻松地访问数据。
Hive提供了哪些功能?
Apache Hive提供以下功能:
Apache Hive提供了比Map Reduce更少的更简单的查询模型,且编码更少
HQL和SQL具有相似的语法
它提供了许多功能,可简化分析的使用
在相同的大型数据集上,响应时间通常比其他类型的查询快得多
Apache Hive支持在不同的计算框架上运行
它支持HDFS上的临时查询数据
Apache Hive支持用户定义的功能,脚本和定制的I / O格式以扩展其功能
可扩展和扩展到各种类型的数据和更大的数据集
成熟的JDBC和ODBC驱动程序允许许多应用程序提取Hive数据以进行无缝报告
Hive允许用户使用SerDes和Input / Output格式以任意格式读取数据
Hive具有定义明确的体系结构,用于元数据管理,身份验证和查询优化
有大量的从业人员和开发人员致力于和使用Hive
Apache Hive中的表类型
以下是Apache Hive中的表类型:
托管表
在托管表中,表数据和表架构均由Hive管理。数据将位于以Hive数据仓库内的表命名的文件夹中,该文件夹实际上只是HDFS中的文件位置。
安装Hive时,该位置可由用户配置。所谓托管还是受控,是指如果删除(删除)托管表,则Hive将同时删除Schema(表的描述)和与该表关联的数据文件。默认位置是/ user / hive / warehouse。
创建托管表的语法
如果库存不存在,则创建表格(兑换STRING,
符号STRING,
price_open FLOAT,
price_high FLOAT,
price_low FLOAT,
price_adj_close FLOAT)
行格式由','终止的字段;
对于托管表,您还可以复制现有表的模式(但不能复制数据):
如果不存在,则创建外部表mydb.employees3
像mydb.employees
位置'/ path / to / data';
外部表
外部表是仅由Hive控制表架构的表。在大多数情况下,用户将在HDFS中设置文件夹位置,然后在其中复制数据文件。该位置作为表定义语句的一部分包括在内。删除外部表后,Hive将仅删除与该表关联的架构。数据文件不受影响。
创建外部表的语法
如果存货不存在,则创建外部表(交换STRING,
符号STRING,
price_open FLOAT,
price_high FLOAT,
price_low FLOAT,
price_adj_close FLOAT)
行格式以','终止的字段
位置'/ data / stocks';
托管表与外部表–有何区别?
托管表外部表
Hive假定它 拥有托管表的数据。对于外部表,蜂巢假设,它并没有管理这些数据。
如果删除了托管表或分区,则将删除与该表或分区关联的数据和元数据。删除表不会删除数据,尽管将删除表的元数据。
对于托管表,Hive将数据存储到其仓库目录中对于外部表,Hive将数据存储在表创建期间指定的LOCATION中(通常不在仓库目录中)
托管表提供了ACID /跨国行动支持。外部表不提供ACID /事务处理支持。
语句:支持ARCHIVE,UNARCHIVE,TRUNCATE,MERGE,CONCATENATE不支持。
支持查询结果缓存(保存已执行的Hive查询的结果以供重用)不支持
识别Apache Hive表的类型
您可以使用DESCRIBE EXTENDED表名的输出来判断表是托管表还是外部表。
在“详细表信息”输出的结尾附近,您将看到托管表的以下内容:
... tableType:MANAGED_TABLE)
对于外部表,您将看到以下内容:
... tableType:EXTERNAL_TABLE)
注意:如果省略EXTERNAL关键字,并且原始表位于外部,则新表也将位于外部。如果省略EXTERNAL并且原始表被管理,则新表也将被管理。但是,如果包含EXTERNAL关键字并且原始表受到管理,则新表将位于外部。即使在这种情况下,LOCATION子句仍然是可选的。
题库


雷达卡



京公网安备 11010802022788号







