我有一个输入关系 X
看起来是这样的:
a:chararray, b:chararray, c:(d:chararray, e:(f:chararray, g:chararray))
我想在一个generate语句中再次生成精确的元组。这不管用,但希望它能给我一个很好的例子:
foreach x generate a as a, b as b, (d as d, (f as f, g as g) as e) as c
实际上,我正在生成代码来对类型进行小的编辑,所以下面的答案是:
foreach x generate *
…在这里没用。
有没有语法可以让我在pig的一个generate语句中生成任意嵌套的结构?公平的假设是 FLATTEN
-ed类型——也就是说,没有包、Map等的任意嵌套元组。
谢谢你的帮助!
编辑:我有点接近了。这几乎奏效了:
x = LOAD 'data.json' USING JsonLoader('a:chararray, b:chararray') AS a:chararray, b:chararray;
y = foreach x generate (a, b, (a, b, (a, b))) as (a:chararray, b:chararray, tuple1:(a:chararray, b:chararray, tuple2:(a:chararray, b:chararray)));
在语义上,这是正确的,在语法上也是有效的,但它给了我一个错误:
Incompatable schema: left is "a:chararray,b:chararray,tuple1:tuple(a:chararray,b:chararray,tuple2:tuple(a:chararray,b:chararray))", right is "org.apache.pig.builtin.totuple_b_3:tuple(a:chararray,b:chararray,org.apache.pig.builtin.totuple_b_2:tuple(a:chararray,b:chararray,org.apache.pig.builtin.totuple_b_1:tuple(a:chararray,b:chararray)))"
…这对我来说似乎很奇怪,因为要么(a)两个模式应该匹配,要么(b)右边有一个额外的元组“层”,这在语法上是不可能匹配的。
1条答案
按热度按时间zxlwwiss1#
一种可能是