有没有办法在猪中创建一个小的常量关系(表)?我需要创建一个仅包含 1 个包含常量值的元组的关系。类似于:
A = LOAD using ConstantLoader('{(1,2,3)}');
谢谢,伊多
有没有办法在猪中创建一个小的常量关系(表)?我需要创建一个仅包含 1 个包含常量值的元组的关系。类似于:
A = LOAD using ConstantLoader('{(1,2,3)}');
谢谢,伊多
我不确定您为什么需要它,但是,这是一个丑陋的解决方案:
A = LOAD 'some/sample/file' ;
B = FOREACH A GENERATE '' ;
C = LIMIT A 1 ;
现在,您可以使用“C”作为具有一个空元组的“空关系”。
DEFINE GenerateRelationFromString(string) RETURNS relation {
temp = LOAD 'somefile';
tempLimit1 = LIMIT temp 1;
$relation = FOREACH tempLimit1 GENERATE FLATTEN(TOKENIZE('$string', ','));
};
用法:
fourRows = GenerateRelationFromString('1,2,3,4');
myConstantRelation = FOREACH fourRows GENERATE (
CASE $0
WHEN '1' THEN (1, 'Ivan')
WHEN '2' THEN (2, 'Boris')
WHEN '3' THEN (3, 'Vladimir')
WHEN '4' THEN (4, 'Olga')
END
) as myTuple;
这肯定是 hacky,在我看来,正确的方法是实现一个 StringLoader() ,它可以像这样工作:
fourRows = LOAD '1,2,3,4' USING StringLoader(',');
通常用于文件位置的参数将仅用作文字字符串输入。
快速回答:没有。
我在pig-dev 邮件列表中询问了它。