Hadoop示例图reduce程序使用Awk



我熟悉使用Java的Hadoop。正在查找仅使用AWK的HadoopMapreduce示例程序。

对于包含…的文本文件。。。

A k1
B k1
C k2
D k3

寻找o/p

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 '{a[$2]++}END{for(k in a)print k,a[k]}' file
k1 2
k2 1
k3 1

相关内容

  • 没有找到相关文章

最新更新