在 pig 的两个值之间输出 space 的元组
Outputting a tuple with space between two values in pig
我一直在使用 pig 来过滤包含制表符分隔形式数据的大文件。该文件中的数据采用以下形式 - fname lname age
Bill Gates 50
Warren Buffet 100
Elon Musk 80
Jack Dorsey 10
我想过滤掉年龄 > 50 的过滤器,并使用 Pig 将结果数据以 (fname lname) 形式存储在文件中。
这是我正在使用的代码 -
data = LOAD 'persons.txt' AS (fname:chararray, lname:chararray, age:int);
data1 = FILTER data BY age > 50;
data2 = FOREACH data1 GENERATE (fname, lname);
STORE data2 INTO 'result.txt';
通过使用这段代码,我可以得到以下输出 -
(Warren,Buffet)
(Elon,Musk)
这不是我想要的输出,而是我想要得到以下输出 -
(Warren Buffet)
(Elon Musk)
为了获得这种输出,我尝试使用 FOREACH data1 GENERATE (fname lname)
,fname 和 lname 之间没有逗号。但它显示错误 Synatx error, unexpected symbol at or near fname
.
任何人都可以帮助我如何获得正确的输出?
注意 -> 我 运行 Hadoop 集群上的 Pig 不是本地的。
在 fname 和 lname
之间使用 CONCAT
和 space
data2 = FOREACH data1 GENERATE CONCAT(fname,' ',lname);
我一直在使用 pig 来过滤包含制表符分隔形式数据的大文件。该文件中的数据采用以下形式 - fname lname age
Bill Gates 50
Warren Buffet 100
Elon Musk 80
Jack Dorsey 10
我想过滤掉年龄 > 50 的过滤器,并使用 Pig 将结果数据以 (fname lname) 形式存储在文件中。
这是我正在使用的代码 -
data = LOAD 'persons.txt' AS (fname:chararray, lname:chararray, age:int);
data1 = FILTER data BY age > 50;
data2 = FOREACH data1 GENERATE (fname, lname);
STORE data2 INTO 'result.txt';
通过使用这段代码,我可以得到以下输出 -
(Warren,Buffet)
(Elon,Musk)
这不是我想要的输出,而是我想要得到以下输出 -
(Warren Buffet)
(Elon Musk)
为了获得这种输出,我尝试使用 FOREACH data1 GENERATE (fname lname)
,fname 和 lname 之间没有逗号。但它显示错误 Synatx error, unexpected symbol at or near fname
.
任何人都可以帮助我如何获得正确的输出?
注意 -> 我 运行 Hadoop 集群上的 Pig 不是本地的。
在 fname 和 lname
之间使用CONCAT
和 space
data2 = FOREACH data1 GENERATE CONCAT(fname,' ',lname);