我一直在使用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);
关于hadoop - 输出在Pig中两个值之间有空格的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64409919/