如何在pig中创建一个小的常量关系(表)?

hgc7kmma  于 2021-06-24  发布在  Pig
关注(0)|答案(3)|浏览(268)

有没有办法在pig中创建一个小的常量关系(表)?我需要创建一个只有1个元组包含常量值的关系。大致如下:

A = LOAD using ConstantLoader('{(1,2,3)}');

谢谢,我

mrfwxfqh

mrfwxfqh1#

我不知道你为什么需要这个,但是,这里有一个丑陋的解决方案:

A = LOAD 'some/sample/file' ;
B = FOREACH A GENERATE '' ;
C = LIMIT A 1 ;

现在,可以使用“c”作为具有一个空元组的“空关系”。

py49o6xq

py49o6xq2#

快速回答:不。
我在邮件列表上问过。

llew8vvj

llew8vvj3#

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;

这无疑是一种黑客行为,在我看来,正确的方法是实现一个stringloader(),它的工作方式如下:

fourRows = LOAD '1,2,3,4' USING StringLoader(',');

通常用于文件位置的参数将仅用作litral字符串输入。

相关问题