使用 Awk 的 Hadoop 示例 map reduce 程序

标签 hadoop awk mapreduce

我熟悉使用 Java 的 Hadoop。寻找仅使用 AWK 的示例 Hadoop Map reduce 程序。

对于包含...的文本文件

A k1
B k1
C k2
D k3

找工作

k1 2
k2 1
k3 1

最佳答案

我建议使用 Hadoop 流来执行此操作。无论如何,我都不是 Awk 专家,但使用 @sudo_O 答案并将其转换为 Hadoop 世界是我要做的:

  1. 编写将用作映射器的 Awk 脚本。为此,您只需要一个映射器,不需要缩减器。

    $ cat mapper.awk
    #!/usr/bin/awk -f
    
    {a[$2]++}END{for(k in a)print k,a[k]}
    
  2. 您可以执行以下操作来运行 Hadoop 流作业:

    ${HADOOP_HOME}/bin/hadoop \
    jar ${HADOOP_HOME}/contrib/streaming/*.jar \
    -D mapreduce.job.reduces=0 \
    -D mapred.reduce.tasks=0 \
    -input /path/to/input.txt \
    -output /path/to/output/dir \
    -mapper mapper.awk \
    -file /path/to/mapper.awk
    
  3. 您可以通过执行以下操作在 HDFS 中查看结果:

    hadoop fs -cat /path/to/output/dir/*
    

关于使用 Awk 的 Hadoop 示例 map reduce 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17789603/

相关文章:

linux - 删除换行符?使用 awk 吗?

java - HBase MapReduce

java - 运行 "hbase shell"在 OSX 中给出错误

linux - 合并两个文件(使用行号而不是公共(public)字段)

linux - 如何使用 cut 和 awk 命令以表格格式提取文本输入?

hadoop - Hadoop grep搜索输出-作业计数器

java - hadoop eclipse插件未将代码部署到hadoop集群

hadoop - 使用 oozie 协调器安排每月工作

java - 在 HBASE 中创建表时找不到类异常

hadoop - 读取、转换并流式传输到 Hadoop