我遇到了以下猪代码。
我需要通过FOREACH读取的prevarus变量具有以下DESCRIBE:
UnionD1D2_Distinct:{UnionD1D2_Foreach1 :: null :: display_site: chararray,UnionD1D2_Foreach1 :: efectivos_click: long,UnionD1D2_Foreach2 :: null :: display_site: chararray,UnionD1D2_Foreach2 :: total_click:long}
这里是示例数据:
(linuxlife.example.com,113,linuxlife.example.com,5343) (mobilesource.example.com,211,mobilesource.example.com,8120) (siliconshore.example.com,170,siliconshore.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_Calc的迭代器。后端 错误:标量在输出中有多个行。第一: (filmport.example.com,121,filmport.example.com,5395),第二名 :(firesale.example.com,129,firesale.example.com,5452)
我在做什么错了?
请
致谢!
答案 0 :(得分:0)
在别名上使用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;
让我们知道您是否遇到相同的错误。