我正在加载此数据:
data6 = 'item1' 111 { ('thing1', 222, {('value1'),('value2')}) }
使用此命令
A = load 'data6' as ( item:chararray, d:int, things:bag{(thing:chararray, d1:int, values:bag{(v:chararray)})} );
我正试图用这个命令把整个事情搞砸。
A_flattened = FOREACH A GENERATE item, d, things::thing AS thing; things::d1 AS d1, FLATTEN(things::values) AS value;
但我得到一个错误:
Invalid field projection. Projected field [things::thing] does not exist in schema: item:chararray,d:int,things:bag{:tuple(thing:chararray,d1:int,values:bag{:tuple(v:chararray)})}
我试着给内心命名 things
元组,但我得到一个类似的错误。有人能帮我正确的语法吗?
1条答案
按热度按时间fwzugrvs1#
你需要使用things.thing,things.d1,thangs.values,因为你想在包上做投影。#用于Map上的投影。
以下是行李投影的介绍(在本页中搜索“行李投影”):http://ofps.oreilly.com/titles/9781449302641/intro_pig_latin.html
jnd的描述是:
除非字段名在记录中不再唯一,否则不需要使用daily::前缀。在本例中,如果希望引用联接后的某个日期字段,则需要使用daily::date或divs::date。但是像open和div这样的字段是不需要的,因为没有歧义。