我熟悉使用 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 世界是我要做的:
编写将用作映射器的 Awk 脚本。为此,您只需要一个映射器,不需要缩减器。
$ cat mapper.awk #!/usr/bin/awk -f {a[$2]++}END{for(k in a)print k,a[k]}
您可以执行以下操作来运行 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
您可以通过执行以下操作在 HDFS 中查看结果:
hadoop fs -cat /path/to/output/dir/*
关于使用 Awk 的 Hadoop 示例 map reduce 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17789603/