1. Apache Pig 的优点和缺点
众所周知,我们使用Apache Pig来分析大量数据, Pig存在优点,但是, 在某些地方,也有一些缺点。在本章中,我们将讨论Apache Pig的所有优点和缺点。
2.介绍Apache Pig
Apache Pig是一种数据流语言。 它建立在Hadoop之上。 无需编写复杂的 MapReduce作业,可以更轻松地处理,清理和分析Hadoop中的“大数据”。
另外,它还有很多关系数据库特性。 此外,语言中已经包含了很好的类似于SQL join,union, distinct等更多的命令。 Pig的解决方案与关系数据库不同,它适用于“大数据”,它可以轻松地处理大型文件,而且不需要结构化数据。 另外,可以自然地将Pig用于ETL(提取转换加载)任务,因为它可以处理非结构化数据。
3. Apache Pig的优点和缺点
让我们分别讨论Apache Pig的优点和缺点:
Apache Pig的优点
减少开发时间
开发时需要更少的时间。 这是主要的优势之一。特别是考虑到 MapReduce作业的复杂性,花费时间和程序的维护。
简单易学
了解SQL的程序员,就可以编写Pig Latin来实现MapReduce作业。
程序过程语言
Apache Pig是一种非声明式的程序过程语言,与SQL不同。 可以轻松地遵循支持的命令。 在每一步数据转换中都清晰易懂。与MapReduce进行比较, 它非常简洁,不像Java,更像Python。
数据流
它是一种数据流语言。意味着所有的操作都是关于数据的, 数据转换是十分重要的。 不能创建没有数据的循环。核心就是需要始终转换和操纵数据。
易于控制执行
可以控制每一步的执行,本质上是程序性的。 直截了当。可以编写自己的UDF(用户定义函数)并注入Pipeline中的一个特定部分。
UDF
可以编写自己的UDF。
Lazy evaluation 延时执行
除非生成输出文件或输出任何消息,否则不会进行评估执行。这是逻辑执行计划的一个好处。可以优化整个程序脚本,并且优化器可以产生一个有效的执行计划。
Hadoop功能的使用
通过Pig,可以享受Hadoop提供的一切优点,比如并行化,容错性等,并且也可以具有许多关系数据库特性的功能。
对非结构化数据有效
Pig对非结构化和杂乱的大数据集非常有效。基本上,Pig是使大型非结构化数据结构化的最佳工具之一。
Base Pipeline
如果想要并行化执行并用于大量数据的UDF。可以使用Pig作为基础管道,首先完成计算量大的工作。只是在我们想要的步骤中应用我们的UDF即可。
Apache Pig 的局限性
Pig的错误处理
Pig 中UDF(Python)而产生的错误没有帮助。有时候,出现问题,但它只是在UDF中出现错误,例如exec错误,即使问题与语法或类型错误有关,它也只是一个逻辑错误。有时候,难与调试
成熟度不够完善
Pig仍然在发展中.
支持
有限的支持。
隐式数据结构模式
在Apache Pig中,数据结构模式是可选的,不是明确而是隐含地强制执行的 。由于它不强制显式模式,有时候,一个数据结构会传送为字节数组,是一种“原始”数据类型。
合适的集成编辑器
合适的编辑器,提供比语法完成更多的功能来编写Pig Latin。
延迟执行
除非转储或存储中间或最终结果,否则不执行这些命令。这增加了调试和解决问题之间的迭代。