国外大公司Pig常见面试题

1)区分Hadoop MapReduce和Pig

Hadoop MapReduce是 编译语言 , 抽象级别低 , 代码需要更多行代码 ,
代码效率代码效率很高。

Pig是脚本语言,抽象级别高。pig与Hadoop MapReduce相比,代码行更少。
代码效率相对较低。

2)比较Apache Pig和SQL。

Apache Pig与SQL的区别在于ETL的用法,惰性评估,在管道中任何给定时间点存储数据,支持管道拆分和显式声明执行计划。 SQL围绕查询产生单个结果。 SQL没有用于拆分数据处理流并将不同的运算符应用于每个子流的内置机制。
Apache Pig允许将用户代码包括在管道的任何位置,而如果要在SQL中使用的数据首先需要导入到数据库中,然后开始清理和转换过程。

3)说明在Apache Pig中进行编程时对MapReduce的需求。

Apache Pig程序使用称为Pig Latin的查询语言编写,与SQL查询语言相似。为了执行查询,需要执行引擎。 Pig引擎将查询转换为MapReduce作业,因此MapReduce充当执行引擎,并且是运行程序所必需的。

4)说明BloomMapFile。

BloomMapFile是一个类,它扩展了MapFile类。它以HBase表格式使用,以使用动态Bloom筛选器为密钥提供快速的成员资格测试。

5) bag in Pig 是什么意思?

元组的集合在Apache Pig中称为包

6)Pig脚本中的foreach操作的用途是什么?

Apache Pig中的FOREACH操作用于将转换应用于数据包中的每个元素,以便执行相应的操作以生成新的数据项。

语法-FOREACH data_bagname GENERATE exp1,exp2

7)解释Pig中不同的复杂数据类型。

Apache Pig支持3种复杂的数据类型-

映射-这些是使用#连接在一起的键值存储。
元组-类似于表格中的行,其中不同的项目之间用逗号分隔。元组可以具有多个属性。
袋-无序的元组集合。包允许多个重复的元组。
8)Flatten在Pig中做什么?

有时,在元组或包中有数据,如果我们想从该数据中删除嵌套级别,则可以使用Pig中的Flatten修饰符。展平未套袋和元组。对于元组,Flatten运算符将用元组的字段代替元组,而取消嵌套的包有点复杂,因为它需要创建新的元组。

通过研究有趣的Pig实时示例来掌握Hadoop

9)用户如何与Apache Pig中的shell交互?

使用Grunt即Apache Pig的交互式外壳,用户可以与HDFS或本地文件系统进行交互。要启动Grunt,用户应该不使用任何命令来调用Apache Pig –

执行“ pig –x local”命令将出现提示-


grunt >

通过在PIG_CLASSPATH中设置配置,可以在本地模式或集群模式下运行PigLatin脚本。

要退出grunt shell,请按CTRL + D或直接键入exit。

10)Apache Pig脚本使用哪些调试工具?

描述和解释是Apache Pig中重要的调试实用程序。

当尝试调试错误或优化PigLatin脚本时,explain实用程序对Hadoop开发人员很有帮助。 describe可以应用于脚本中的特定别名,也可以应用于grunt交互式shell中的整个脚本。说明实用程序会生成几个文本格式的图形,可以将其打印到文件中。
describe调试实用程序在编写Pig脚本时对开发人员很有帮助,因为它显示了脚本中的关系模式。对于尝试学习Apache Pig的初学者,可以使用describe实用程序来了解每个操作员如何更改数据。


11)在Apache Pig中用于说明什么?

在大型数据集上执行猪脚本通常需要很长时间。为解决此问题,开发人员在示例数据上运行了Pig脚本,但是选择的示例数据有可能无法正确执行您的Pig脚本。例如,如果脚本具有联接运算符,则示例数据中至少应有一些记录具有相同的键,否则联接操作将不返回任何结果。为了解决这类问题,使用了说明。说明从数据中获取样本,并且每当遇到诸如删除数据的联接或过滤器之类的运算符时,它都会通过对记录进行修改以使它们满足

他条件。说明仅显示每个阶段的输出,但不运行任何MapReduce任务。

12)解释Pig脚本的执行计划

或者

区分Apache Pig脚本的逻辑和物理计划

在执行pig脚本期间创建逻辑和物理计划。 Pig脚本基于解释器检查。逻辑计划是在语义检查和基本解析之后生成的,在逻辑计划的创建过程中不会进行任何数据处理。对于Pig脚本中的每一行,都会对运算符执行语法检查,并创建一个逻辑计划。每当脚本中遇到错误时,都会引发异常并结束程序执行,否则脚本中的每个语句都有自己的逻辑计划。

逻辑计划在脚本中包含运算符的集合,但不包含运算符之间的边缘。

生成逻辑计划后,脚本执行将移至物理计划,其中有关于Apache Pig将用来执行Pig脚本的物理运算符的描述。物理计划或多或少类似于一系列MapReduce作业,但是该计划没有任何关于如何在MapReduce中执行的参考。在创建物理计划时,将协同逻辑运算符转换为3个物理运算符,即–本地重排,全局重排和打包。加载和存储功能通常在物理计划中得到解决。

13)您对Apache Pig的区分大小写了解多少?

很难说Apache Pig是区分大小写还是不区分大小写。例如,pig中用户定义的函数,关系和字段名称区分大小写,即函数COUNT与函数计数不相同,或者X = load’foo’与x = load’foo’不相同。另一方面,Apache Pig中的关键字不区分大小写,即LOAD与load相同。

14)您能想到哪些Apache Pig用例?

Apache Pig大数据工具特别用于迭代处理,原始数据研究和传统ETL数据管道。由于Pig可以在模式未知,不一致或不完整的情况下运行,因此它被研究人员广泛使用,他们希望在清理数据并将其加载到数据仓库之前利用这些数据。

例如,要建立行为预测模型,网站可以使用它来跟踪访客对各种类型的广告,图像,文章等的响应。

15)区分PigLatin和HiveQL

必须在HiveQL中指定架构,而在PigLatin中是可选的。
HiveQL是一种声明性语言,而PigLatin是程序性语言。
HiveQL遵循平坦的关系数据模型,而PigLatin具有嵌套的关系数据模型。
阅读有关Pig vs.Hive的更多信息

16)PigLatin是一种强类型语言吗?如果是,那么您是如何得出结论的?

在强类型语言中,用户必须预先声明所有变量的类型。在Apache Pig中,当您描述数据的模式时,它期望数据以您提到的相同格式出现。但是,当模式未知时,脚本将在运行时适应实际的数据类型。因此,可以说PigLatin在大多数情况下是强类型的,但在极少数情况下是轻度键入的,即它继续处理不符合其期望的数据。

17)您对Pig的内包和外包有什么了解?

包内部的关系称为内包,而外包只是Pig中的关系

18)区分GROUP和COGROUP运算符。

GROUP和COGROUP运算符是相同的,并且可以使用一个或多个关系。 GROUP运算符通常用于按单个关系对数据进行分组以提高可读性,而COGROUP可以用于按2个或更多关系对数据进行分组。 COGROUP更像是GROUP和JOIN的组合,即它基于列对表进行分组,然后将它们联接到分组的列上。一次最多可以组合127个关系。

19)解释一下Apache Pig中COUNT_STAR和COUNT函数之间的区别吗?

在计算袋中元素数时,COUNT函数不包括NULL值,而COUNT_STAR(0函数在计数时包括NULL值。

20)Apache Pig提供了哪些各种诊断运算符?

转储运算符-用于在屏幕上显示Pig Latin语句的输出,以便开发人员可以调试代码。
描述操作员-在Apache Pig面试问题10中解释
解释操作员-在apache Pig面试中解释问题-10号
说明操作员-在apache pig面试问题-11中解释
21)您将如何合并两个或多个关系的内容,并将单个关系分为两个或多个关系?

这可以使用UNION和SPLIT运算符来完成。

22)我有一个关系R。如何从关系R中获得前10个元组?

20)Apache Pig提供了哪些各种诊断运算符?

转储运算符-用于在屏幕上显示Pig Latin语句的输出,以便开发人员可以调试代码。
描述操作员-在Apache Pig面试问题10中解释
解释操作员-在apache Pig面试中解释问题-10号
说明操作员-在apache pig面试问题-11中解释
21)您将如何合并两个或多个关系的内容,并将单个关系分为两个或多个关系?

这可以使用UNION和SPLIT运算符来完成。

22)我有一个关系R。如何从关系R中获得前10个元组?

TOP()函数从一包元组或一个关系中返回前N个元组。 N与要比较其值的列以及关系R一起作为参数传递给函数top()。

23)Pig和Hive之间有什么共同点?

HiveQL和PigLatin都将命令转换为MapReduce作业。
它们不能用于OLAP事务,因为很难执行低延迟查询。
24)Apache Pig支持哪些Java UDF类型?

代数,评估和过滤器功能是Pig中支持的各种UDF类型。

25)您在HDFS目录中有一个名为employee.txt的文件,其中包含100条记录。您只想查看employee.txt文件中的前10条记录。您将如何做?

第一步是将文件Employee.txt加载到关系名称为Employee的文件中。

员工数据的前10条记录可以使用limit运算符获取-

结果=限制员工10。

26)解释Apache Pig中的标量数据类型。

integer,float,double,long,bytearray和char数组是Apache Pig中可用的标量数据类型。

27)用户如何与Apache Pig中的HDFS交互?

使用grunt外壳。

28)在Apache Pig中使用过滤器有什么用?

就像SQL中的where子句一样,Apache Pig具有用于根据给定条件或谓词提取记录的过滤器。如果谓词或条件变为true,则记录将通过管道传递。谓词包含各种运算符,例如==,<=,!=,> =。

例子 –

X =将“输入”加载为(名称,地址)

Y =通过符号匹配“ Mr. *”的X;

29)什么是pig的UDF?

如果内置运算符不提供某些功能,则程序员可以通过使用其他编程语言(例如Java,Python,Ruby等)编写用户定义的函数来实现这些功能。然后可以将这些用户定义的函数(UDF)嵌入到Pig Latin中脚本。

30)您可以在Apache Pig脚本中加入多个字段吗?

是的,可以在PIG脚本中联接多个字段,因为联接操作从一个输入获取记录,然后将它们与另一输入联接。这可以通过为每个输入指定键来实现,当键相等时,两行将连接在一起。

31)Pig是否支持多行命令?

是的

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注