hadoop 词频统计&&adoop jar jar包名.jar 包名.主类名 输入路径(文件的目录,不包括文件本身) 输出路径

生成jar包完整操作过程 //www.aboutyun.com/thread-7086-1-1.html

Hadoop fs -put README.txt /0909 上传到Hdfs
Hadoop fs -cat README.txt //查看文件内容
Hadoop jar share/hadoopMapReduce/hadoop-mapreduce-examples-2.5.2.jar   wordcount /0909   /output0909 //计算词频
Hadoop fs -ls /output0909
Hadop fs  -cat  /output0909/part-r-00000 //查看结果
Hadop fs  -get  /output0909/part-r-00000  .点  //数据拿到本地




Sbin/Stop-all.sh
Shutdown -好
Hadoop dsadmin

cd resource/software/hadoop/apache/hadoop-2.5.2-src
find  点 |grep WorkCount
vi 点/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/WorkCount.java
 secureCRT 或者 xshell(远程访问集群软件)
 在xshell
 rz 文件上传
 yum install lrzsz
sz 文件//下载

 
 格式:
 hadoop jar jar包名.jar  包名.主类名    输入路径(文件的目录,不包括文件本身)  输出路径
 hadoop jar t.jar sogou.UidCollector /c /cm
 hadoop jar cys2.jar sogou.UidCollector /uuid /output0909 

hadoop fs -cat /shun/usr |wc -l   // 查看数据条目数
需要注意的是  jar包名可以自定义  在src下的包名.主类名  
输入目录必须提前创建而输入的路径不能提前创建

1 Main()
For(){
Job.waitForCompletion(true);//用于job执行
}
2 TokenizerMapper{//切分器
Mapper< 1 2 3 4> 输入&&输出两对参数(key  value)输出两对参数 第一对一接受上一过程的结构,第二对存放输出结果

 默认用空格做切分
}
3 IntSumReducer{//计数器
Mapper< 1 2 3 4> 输入&&输出两对参数 第一对一接受上一过程的结构,第二对存放输出结果
从reduce(Text key ,Iterable<> value ,Context )中传来的key ,Context上下文
....
context.write(key,result);//写入到hdfs中
}


WordCountMain的代码格式与Java编程规范无异,以下是一个示例: ```java import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCountMain { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCountMain.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } ``` 在这个示例代码中,我们定义了两个类:TokenizerMapper和IntSumReducer。TokenizerMapper是一个Mapper类,用于将输入文件中的数据拆分成单词,并将单词作为key,将数字1作为value输出。IntSumReducer是一个Reducer类,用于将相同的单词合并,并将它们的数量相加,输出最终结果。 在main函数中,我们设置了MapReduce作业的各种参数,包括输入路径输出路径、Mapper和Reducer类等。最后,我们使用System.exit来退出程序,并将MapReduce作业的状态作为参数传递给它。如果作业成功完成,返回0;否则,返回1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值