使用awk的hadoop样例map reduce程序

taor4pac  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(550)

我熟悉使用java的hadoop。正在寻找只使用awk的hadoop map reduce示例程序。
对于包含以下内容的文本文件。。。

A k1
B k1
C k2
D k3

正在查找o/p

k1 2
k2 1
k3 1
webghufk

webghufk1#

这将达到以下目的:

$ awk '{a[$2]++}END{for(k in a)print k,a[k]}' file
k1 2
k2 1
k3 1
cetgtptt

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/*

相关问题