问题描述
我一直在使用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。
解决方法
在CONCAT
中使用fname和lname之间的空格
data2 = FOREACH data1 GENERATE CONCAT(fname,' ',lname);