使用 Hive 作为 ETL 或 ELT 工具(1)
- UID
- 1066743
|
使用 Hive 作为 ETL 或 ELT 工具(1)
用来处理数据的 ETL 和 ELT 工具的概述数据集成和数据管理技术已存在很长一段时间。提取、转换和加载(ETL)数据的工具已经改变了传统的数据库和数据仓库。现在,内存中转换 ETL 工具使得提取、加载、转换(ELT)和 ETL 变得更快。对于大数据来说,是否能够使用内置的 Hadoop 工具而不是使用传统的 ETL 工具来提取、加载和转换数据呢?
大多数 ETL 软件包需要自己的服务器、处理、数据库和许可,还需要专家在该特定的工具中安装、配置和开发它们,而且这些技能并非总是可以转移的。Microsoft® SQL Server® Integration Services 或 IBM InfoSphere® DataStage® 的专家可能不知道如何使用 Informatica 或 Pentaho。为了避免采用新工具所涉及的学习曲线,可以考虑改为使用 Hadoop 生态系统中的工具。Apache Hive 和 Apache Pig(包括在 Hadoop 生态系统中)是提取、加载和转换各种形式的数据的领导者。与许多擅长结构化数据的传统 ETL 工具不同,创建 Hive 和 Pig 是为了在 Hadoop 分布式文件系统(HDFS)中加载和转换非结构化、结构化或半结构化数据。
Hive 构建于传统的数据库和数据仓库理念之上。它对待数据的方式就像是它有一个基于 SQL 或基于架构的结构。在 Hive 中,您可以将数据加载到 HDFS 中,或者将数据直接加载到 Hive 表中。不过,Pig 更加类似于标准的 ETL 脚本语言。在 Pig 中,您的心里可能有一个模式,但您更关心的是如何利用更复杂的功能在 HDFS 中转换和集成数据,而不是简单地将它们放进一个特定的表或数据库。因为 Pig 和 Hive 都使用了 MapReduce 功能,所以它们在执行非面向批量的处理时可能并不是那么快。有些开源工具试图改变这种限制,但问题依然存在。
传统的 ETL 和 ELT 理念的优点和局限性选择 ETL 还是 ELT传统的 ETL 在整个行业中已为人熟知。您可以从数据源 A、B 和 C 中提取数据。您创建并开发不同的方式,通过一定的工作流和数据集成流程来集成、反规范化(de-normalize)并转换那些数据。最后,将集成的数据加载到数据仓库或数据库中,并尝试自动化该流程。
相反,因为 Hadoop 技术的引入,而且硬件和存储已变得便宜得多,另一个理念(ELT)已日渐普及。仍然从数据源 A、B 和 C 提取数据,但先不转换它们,而是将原始数据加载到数据库或 HDFS。通常,加载流程不需要使用模式,而且该数据可以在存储库中保持未处理状态(实际上是被归档)很长一段时间。在需要数据时,某人可以构建一个模式,转换数据,并确定如何分析该数据。这个人甚至可以将新的、转换后的数据加载到另一个平台,如 Apache HBase。
采用 ELT 的好处是,原始数据可以在存储中保留很长时间,其他人可以通过自己希望的方式使用相同的数据,而不是采用某人在五年前决定的反规范化方式和建造该系统的方式。
多年来,ETL 技术和工具几乎完全没有变化,尤其在数据仓库方面。工具已经有所改进,但方法大体保持不变。您从各种来源提取数据,运行一组脚本或 ETL 工作流来转换该数据,然后将其加载到一个星型模式或半标准化的数据仓库或主数据管理系统中。
大部分数据专业人士都很熟悉 ETL。变更管理、慢慢改变的维度、插入、更新和发行公告等问题都已在多年前得到解决或找到解决方法。由于数据仓库中的数据并不总是可靠的,人们依靠微软 Excel® 电子表格来存储数据。这种方法已经形成了其理念和方法论,而且已经实现了相应的战略,但仍有许多不同的方法。
ETL 理念的关键限制是,在流程的早期,必须有人来确定哪些数据是重要的,哪些数据需要更新,哪些数据需要放在一边,以及谁可以获得数据许可。数据仓库或主数据管理系统只存储有人认为重要的数据。最初的原始数据不会被存储,并且无法进行检索。数据集市和转换后的数据成为仅有的可用数据,即使它是数据子集,创建和设计它的人有可能甚至已没有在该公司工作,可能对哪些数据重要持有不同的理念。
鉴于这些限制,人们开始寻找解决方法,比如在本地数据库中存储数据。部门建立了自己的孤岛和数据集市,突然之间,主数据成为了一种有趣的概念,而不是现实。数据并不是集成的数据。销售、营销和财务团队都有不同的数据。数字和仪表板是不可靠的,不值得信任。显然,ETL 不能容纳大数据。
使用 Hive 作为传统 ELT 工具的替代Apache Hive 数据仓库软件有助于查询和管理位于分布式存储中的大型数据集。对于 ETL 而言,Hive 是一个强大的工具,而对于 Hadoop,它既是数据仓库,也是 Hadoop 的数据库。不过,相对于传统的数据库,它是相对缓慢的。它没有提供所有的 SQL 特性,甚至没有提供与传统的数据库相同的数据库特性。但它支持 SQL,它的确像一个数据库那样工作,它让更多的人(即使那些不是程序员的人)可以获得 Hadoop 技术。它提供了一种将非结构化和半结构化数据转化为基于模式的可用数据的方法。要建立一个主数据管理系统?您可以利用 Hive。要建立一个数据仓库?您也可以利用 Hive,但您需要学习一些技巧,使 Hive 成为一个强大的 ETL 工具。
相对于 Apache Pig 和 MapReduce,Hive 让传统的 RDBMS 数据库开发人员或了解 SQL 的其他人可以更容易访问和转换 Hadoop 中的数据。然而,Pig 不太容易理解,对于那些没有软件开发背景的人来说道,学习曲线是陡峭的。MapReduce 是 Java™、C ++ 和 Python 程序员可以相对迅速学会的技术。但是,如果没有一项技术(如 Java)基础,几乎不可能学会 MapReduce。因此,如果您知道 SQL,那么学习和使用 Hive 就会比较容易。 |
|
|
|
|
|