Hadoop:使用Pig在hdfs文件的每一行末尾添加文本

时间:2017-06-28 22:09:20

标签: hadoop hdfs apache-pig

我们在HDFS中有原始日志文件,每个日志都是一行,因为这些日志是行分隔的。

我们的要求是在这些文件中的每个日志的末尾添加文本(例如'12345')...使用pig / hadoop命令/或任何其他基于地图缩减的工具。

请咨询

由于 AJ

2 个答案:

答案 0 :(得分:0)

将加载每个日志条目的文件加载到一个字段中,即line:chararray并使用CONCAT将文本添加到每一行。将其存储到新的日志文件中。如果您需要单个文件,则必须参数化脚本加载每个文件并存储到新文件而不是通配符加载。

Log = LOAD '/path/wildcard/*.log' USING TextLoader(line:chararray);
Log_Text = FOREACH Log GENERATE CONCAT(line,'Your Text') as newline;
STORE Log_Text INTO /path/NewLog.log';

答案 1 :(得分:0)

如果您的文件不是很大,可以使用单个shell命令执行此操作。

hdfs dfs -cat /user/hdfs/logfile.log | sed 's/$/12345/g' |\
hdfs dfs -put - /user/hdfs/newlogfile.txt