对Hive中数据进行ETL的工具
(1)问题分析
考官想考的是开发经验
(2)核心问题讲解
MapReduce
写Mapreduce进行数据处理,需要利用java、python等语言进行开发调试,如果没有一项技术(如 Java)基础,几乎不可能学会 MapReduce。
Pig
Pig 更加类似于标准的 ETL 脚本语言。Apache Pig和Hive是两个基于Hadoop的项目,并为使用Hadoop的MapReduce库提供更高级的语言。Apache Pig提供了一种脚本语言,用于描述读取,过滤,转换,连接和写入数据等操作 - 完全是MapReduce最初设计的操作。Pig不是直接使用MapReduce的数千行Java代码表示这些操作,而是让用户用与bash或perl脚本不同的语言表达它们。Pig非常适合原型开发和快速开发基于MapReduce的作业,而不是在Java本身编写MapReduce作业。
Hive
Hive 构建于传统的数据库和数据仓库理念之上。它对待数据的方式就像是它有一个基于 SQL 或基于架构的结构。如果Pig是“为Hadoop编写脚本”,那么Hive就是“支持SQL查询Hadoop”。Apache Hive提供了一种更具体和更高级的语言,通过运行Hadoop作业来查询数据,而不是直接编写脚本来逐步操作Hadoop上的几个MapReduce作业。该语言在设计上非常像SQL。在 Hive 中,你可以将数据加载到 HDFS 中,或者将数据直接加载到 Hive 表中。
Hive的初步设计思路在于提供与SQL类似的使用体验,开发人员只需要掌握Sql相关的知识就可以使用。 Pig提供一套高级语言平台,用于对结构化与非结构化数据集进行操作与分析。这种语言被称为Pig Latin, 拥有更多规程化方案。 但是同时需要额外的学习成本。
(3)问题扩展
Apache Hive 数据仓库软件有助于查询和管理位于分布式存储中的大型数据集。对于 ETL 而言,Hive 是一个强大的工具,而对于 Hadoop,它既是数据仓库,也是 Hadoop 的数据库。不过,相对于传统的数据库,它是相对缓慢的。它没有提供所有的 SQL 特性,甚至没有提供与传统的数据库相同的数据库特性。但它支持 SQL,它的确像一个数据库那样工作,它让更多的人(即使那些不是程序员的人)可以获得 Hadoop 技术。它提供了一种将非结构化和半结构化数据转化为基于模式的可用数据的方法。要建立一个主数据管理系统?你可以利用 Hive。要建立一个数据仓库?你也可以利用 Hive,但你首先需要学习一些技巧,使 Hive 成为一个强大的 ETL 工具。
相对于 Apache Pig 和 MapReduce,Hive 让传统数据库开发人员或了解 SQL 的其他人可以更容易访问和转换 Hadoop 中的数据。然而,Pig 不太容易理解,对于那些没有软件开发背景的人来说道,学习曲线比较陡峭。MapReduce 是 Java™、C ++ 和 Python 程序员可以相对迅速学会的技术。但是,如果没有一项技术(如 Java)基础,几乎不可能学会 MapReduce。如果你知道 SQL,那么学习和使用 Hive 就会比较容易,所以推荐使用Hive进行ETL。