在猪拉丁语中,我无法将数据作为多个元组加载,请提供建议

时间:2015-06-10 13:37:08

标签: apache-pig

我无法将数据作为多个元组加载,我不确定我在做什么错误,请指教。

data.txt
vineet  1   pass    Govt
hisham  2   pass    Prvt
raj 3   fail    Prvt

我想将它们加载为2次。

A = LOAD 'data.txt' USING PigStorage('\t') AS (T1:tuple(name:bytearray, no:int), T2:tuple(result:chararray, school:chararray));

OR

A = LOAD 'data.txt' USING PigStorage('\t') AS (T1:(name:bytearray, no:int), T2:(result:chararray, school:chararray));

转储A; 以下数据以新行的形式显示,我不知道为什么我无法从data.txt读取实际数据。

(,)
(,)
(,)

1 个答案:

答案 0 :(得分:1)

由于输入数据未存储为元组,因此我们无法直接将其读入元组。

一种可行的方法是读取数据,然后形成一个包含必填字段的元组。

猪脚本:

A = LOAD 'a.csv' USING PigStorage('\t') AS (name:chararray,no:int,result:chararray,school:chararray);
B = FOREACH A GENERATE (name,no) AS T1:tuple(name:chararray, no:int), (result,school) AS T2:tuple(result:chararray, school:chararray);
DUMP B;

输入:a.csv

vineet  1   pass    Govt
hisham  2   pass    Prvt
raj 3   fail    Prvt

输出:DUMP B:

((vineet,1),(pass,Govt))
((hisham,2),(pass,Prvt))
((raj,3),(fail,Prvt))

输出:DESCRIBE B:

B: {T1: (name: chararray,no: int),T2: (result: chararray,school: chararray)}