在pig拉丁语中使用foreach读取var

kwvwclae  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(383)

我有以下Pig代码的问题。
我需要通过foreach阅读的previus var有以下描述:
uniond1d2\u distinct:{uniond1d2\u foreach1::null::display\u site:chararray,uniond1d2\u foreach1::efectivos\u click:long,uniond1d2\u foreach2::null::display\u site:chararray,uniond1d2\u foreach2::total\u click:long}
下面是示例数据:
(linuxlife.example.com,113,linuxlife.example.com,5343)(mobilesource.example.com,211,mobilesource.example.com,8120)(silicanband.example.com,170,silicanband.example.com,7764)(printoperator.example.com,62,printoperator.example.com,2724)
因此,foreach读取的数据是:

UnionD1D2_Calc = FOREACH UnionD1D2_Distinct
  GENERATE
    (UnionD1D2_Distinct.UnionD1D2_Foreach1::efectivos_click1/UnionD1D2_Distinct.UnionD1D2_Foreach2::total_click2)*100 AS ctr;

但是,我总是得到以下信息:
错误1066:无法打开别名uniond1d2\u calc的迭代器。后端错误:标量在输出中有多行。第一:(filmport.example.com,121,filmport.example.com,5395),第二:(firesale.example.com,129,firesale.example.com,5452)
我做错什么了?
拜托,
当做!

d8tt03nd

d8tt03nd1#

当你使用 FOREACH 在别名上,不需要再次使用别名来引用变量。例如 UnionD1D2_Distinct.UnionD1D2_Foreach1::efectivos_click1 你可以用 UnionD1D2_Foreach1::efectivos_click1 .
请尝试:

UnionD1D2_Calc = FOREACH UnionD1D2_Distinct GENERATE
    (UnionD1D2_Foreach1::efectivos_click1/UnionD1D2_Foreach2::total_click2)*100 AS ctr;

如果你有同样的错误,请告诉我们。

相关问题