apache pig中有条件if-like操作符吗?

s2j5cfk0  于 2021-06-03  发布在  Hadoop
关注(0)|答案(5)|浏览(462)

实际上,我正在编写pig脚本,如果满足其中一个条件,我想执行一些语句集。
我已经设置了一个变量,并检查该变量的一些值。假设

if flag==0 then
  A = LOAD 'file' using PigStorage() as (f1:int, ....);
  B = ...;
  C = ....;
else 
  again some Pig Latin statements

我可以用Pig的脚本来做这个吗?如果是,那我怎么做?
谢谢。

wi3ka0sx

wi3ka0sx1#

创建一个udf(比如java),然后将其嵌入到pig脚本中。您需要“注册”在编写udf之后生成的jar文件。
//(类似这样的),说你的java UDF classUDFCondition &生成的jar文件是pigudfcondition.jar,然后在 PIG Code 注册pigudfcondition.jar

X = foreach A generate UDFCondition(..flag...)
wxclj1h5

wxclj1h52#

是的,pig确实提供了if-then-else结构,但它并没有按照您所要求的方式使用。
pig's if then else是一个用速记“condition”调用的算术运算符?true\u value:false\u value”作为表达式的一部分,例如:

X = FOREACH A GENERATE f2, (f2==1?1:COUNT(B));

必须已加载表a才能执行此操作。要围绕整个pig语句执行控制流,您将需要类似oozie的东西,正如fakrudeen所建议的那样。

ruarlubt

ruarlubt3#

pig是数据流语言而不是控制流。唯一接近的结构是pig split,但它非常有限。
您可以将oozie及其决策构造与两个pig脚本一起使用。

vtwuwzda

vtwuwzda4#

从版本0.12起,有一个case语句可用。

mitkmikd

mitkmikd5#

可以围绕pig脚本创建python Package 器。见文件中的嵌入式清管器。

相关问题