我熟悉使用java的hadoop。正在寻找只使用awk的hadoop map reduce示例程序。对于包含以下内容的文本文件。。。
A k1 B k1 C k2 D k3
正在查找o/p
k1 2 k2 1 k3 1
webghufk1#
这将达到以下目的:
$ awk '{a[$2]++}END{for(k in a)print k,a[k]}' file k1 2 k2 1 k3 1
cetgtptt2#
我建议使用hadoop流媒体来做到这一点。无论如何,我都不是awkMaven,但是使用@sudo\u o answer并将其转换为hadoop世界是我要做的:编写一个awk脚本,作为Map器使用。你只需要一个Map器,不需要还原器。
$ 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/*
2条答案
按热度按时间webghufk1#
这将达到以下目的:
cetgtptt2#
我建议使用hadoop流媒体来做到这一点。无论如何,我都不是awkMaven,但是使用@sudo\u o answer并将其转换为hadoop世界是我要做的:
编写一个awk脚本,作为Map器使用。你只需要一个Map器,不需要还原器。
可以执行以下操作来运行hadoop流作业:
您可以通过执行以下操作在hdfs中查看结果: