提交 459dfcef 编写于 作者: W wizardforcel

2022-01-08 23:53:32

上级 9c3a1032
# 一、Hive 简介
Hive 是大数据的数据仓库。它允许您在 Hadoop 中获取非结构化的可变数据,应用固定的外部模式,并使用类似于 SQL 的语言查询数据。Hive 抽象了 Hadoop 中编写和运行 map/reduce 作业的复杂性,为大数据提供了一个熟悉且可访问的界面。
Hadoop 是最流行的存储和处理大量数据的框架。它运行在一个机器集群上,规模最大的是运行在数千台服务器上的 Hadoop 部署,存储了数千兆字节的数据。使用 Hadoop,您可以使用作业查询数据,这些作业可以分解成任务并分布在集群中。这些映射/缩减任务很强大,但是它们很复杂,即使对于简单的查询也是如此。
......
# 二、运行 Hive
因为 Hive 自然位于 Hadoop 的其他部分旁边,所以它通常与现有集群一起运行。对于非生产环境,Hadoop 可以在本地或伪分布式模式下运行,Hive 可以向 Hadoop 提交作业,这意味着它将使用任何配置的运行时。
Hive 通常通过向 Hadoop 发送作业来执行查询,或者使用原始的映射/缩减引擎,或者现在更常见的是使用 Hadoop 2 中的作业管理框架“另一个资源协商器”。Hive 可以使用自己的 Java 虚拟机(JVM)在本地运行较小的查询,而不是向集群提交作业。这在开发查询时非常有用,因为我们可以在数据子集上快速运行查询,然后将整个作业提交给 Hadoop。
......
# 三、Hive 内部表
内部表,也称为本机表或托管表,由 Hive 控制——事实上,Hive 拥有这些表的存储。它们在 HDFS 仍在继续,这意味着您可以获得可靠、广泛可用的数据的所有好处,并且,如果您选择通用格式,您仍然可以使用其他 Hadoop 工具查询 Hive 表文件。
当您使用内部表时,您将获得更多 Hive 功能的主要好处。目前,只有托管表才有可能更新或删除数据(我们将在第 7 章的 DDL 和 Hive 中的 DML 中详细介绍这一点),HiveQL 有许多边缘情况只适用于内部表。
......
# 四、HDFS 上的外部表
Hive 允许我们编写查询,就好像我们通过在 HDFS 的各种格式上应用固定的模式来访问一致的、结构化的数据存储一样。HiveQL 提供了一个熟悉的、简单的入口点,允许用户运行复杂的查询,而不必理解 Java 或 map/reduce API。
使用 Hive,我们可以将丰富的模型应用于数据,这将简化查询,因为用户使用更高级别的结构,如表和视图,而不需要理解底层数据文件中的属性。
......
# 五、HBase 上的外部表
HBase 是一种大数据存储技术,可提供对海量数据的实时访问。我们在这里不做过多的详细介绍,但是 Syncfusion 已经在他们的简洁系列中用另一个免费电子书覆盖了它— **简洁**(也是我写的)。
HBase 的体系结构允许您从特定的行和列中快速读取单元格,但是它的半结构化特性意味着单元格中的数据有时很难处理。通过将 HBase 表映射为 Hive 表,您可以获得固定结构的所有好处,您可以使用 HiveQL 进行查询,同时还可以获得 HBase 的所有速度优势。
......
# 六、ETL 和 Hive
当您拥有想要加载到 Hive 中的现有数据,而不需要使用外部表创建到源数据的链接时,Hive 提供了许多选项。事实上,Hive 有几个命令来支持 ETL,所有这些都导致填充一个内部 Hive 表。
您可以从 HBase 的数据子集填充 Hive,并将行键拆分为用于索引的部分,也可以从 HDFS 或本地文件系统加载文件。作为负载的一部分,您可以将数据转换为更有用的表示,或者只去除您需要的部分。
......
# 七、Hive 中的 DDL 和 DML
在前几章中,我们已经查看了一些 HiveQL 查询,我们可以看到它们主要是 SQL,包括一些特定于 Hive 的语句和子句。HiveQL 并不完全与 ANSI-SQL 兼容(尽管实现 SQL-92 的兼容性是未来版本的目标),但差异是在边缘发现的——任何有 SQL 经验的人都可以轻松地使用 HiveQL。
与 SQL 一样,HiveQL 语句或者用数据定义语言(DDL)定义数据库的结构,或者用数据修改语言(DML)更改数据查询的内容,或者读取数据。
......
# 八、数据分区
跨多个物理存储位置拆分逻辑数据库对象是实现高性能和可扩展性的关键。存储位置越多,可以并发访问文件的计算节点就越多。密集作业可以以高度并行的方式运行,这意味着它们将运行得更高效,完成得更快。
一些数据库称之为分片,而性能提高的代价通常是访问数据更加复杂。在某些实现中,您必须指定插入或读取哪个碎片,并且管理(例如,如果一些碎片过载,重新分发数据)并不简单。
......
# 九、使用 HiveQL 的查询
Hive 的最大驱动因素是 HiveQL 的广泛功能,以及它对于任何有 SQL 经验的人来说都很容易采用。识别、加载和转换数据的复杂性可以在开发或运营团队中隔离开来,这将使分析师可以使用熟悉的语法自由地查询大量数据。
HiveQL 随着 Hive 的新版本不断扩展,该语言甚至已经集成到 Apache Spark 中,因此内存中的大数据工作负载也可以基于 HiveQL。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册