【问题标题】:Hadoop : Using Pig to add text at the end of every line of a hdfs fileHadoop:使用 Pig 在 hdfs 文件的每一行末尾添加文本
【发布时间】:2017-12-02 10:59:51
【问题描述】:

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

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

请指教

谢谢 阿杰

【问题讨论】:

  • 到目前为止你尝试过什么?请发布,以便我们尝试和帮助
  • 您只需要一个映射器来执行此操作。到目前为止,您尝试过什么?

标签: hadoop hdfs apache-pig


【解决方案1】:

将每个日志条目加载到一个字段中的文件加载:行: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';

【讨论】:

  • 感谢“inquisitive_mind”,这帮助我们解决了这个问题
【解决方案2】:

如果您的文件不是特别大,您可以使用单个 shell 命令来完成。

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

【讨论】:

    猜你喜欢
    • 2013-04-05
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2012-07-03
    • 2014-05-29
    • 1970-01-01
    相关资源
    最近更新 更多