Map-Reduce数据分析之一(实例1提取数据)
来源:互联网 发布:手机保存网络视频 编辑:程序博客网 时间:2024/05/04 22:42
实例要求:给出一个文档,文档内容为类似Apr 23 11:49:54 hostapd:wlan0: STA 14:7d:c5:9e:fb:84的路由器使用信息;
要求提取出其中的日期,时间,路由器的MAC(Apr 23 11:49:54 14:7d:c5:9e:fb:84)。
代码如下:
该程序中只有map,没有reduce。因为只需要划分出文本输出即可,不需要汇总。
import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.conf.Configured;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapred.JobConf;import org.apache.hadoop.mapred.MapReduceBase;import org.apache.hadoop.mapred.TextOutputFormat;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.OutputFormat;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.Tool;import org.apache.hadoop.util.ToolRunner;/* 给一个文本,内容为Apr 23 11:49:54 hostapd:wlan0: STA 14:7d:c5:9e:fb:84类似到路由器到使用情况。 要求从文本中提取出 日期,时间,路由器到MAC */public class Test_1 extends Configured implements Tool{enum Counter{LINESKIP;//出错到行 }public static class Map extends Mapper<LongWritable,Text,NullWritable,Text>{//参数依次说明:输入key的格式,输入value到格式;输出key到格式,输出value到格式(注意输出格式NullWritable相当于空值)public void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException{//context被称为上下文机制,自带万日特方法String line=value.toString();//读入原数据Text word=new Text();try{//数据处理 String [] lineSplite=line.split(" ");//×××××用String的Split()方法将文本按空格符划分,返回一个数组××××× String month=lineSplite[0]; String time=lineSplite[1]; String mac=lineSplite[5]; Text out=new Text(month+' '+time+' '+mac);//输出时,不能直接输出string类型,必须转换成hadoop格式才能输出 //context.write(key, value);输出机制为:key \t value;如果有一个值为空值,那\t就不会被输出 context.write(NullWritable.get(), out);//将key值到位置写为空值,value到位置放key和value的值,就不会输出制表符\t了}catch(java.lang.ArrayIndexOutOfBoundsException e){context.getCounter(Counter.LINESKIP).increment(1);//出错令计数器+1return;}}}public int run(String[] args) throws Exception{Configuration conf=getConf();Job job=new Job(conf,"Test_1");//任务名job.setJarByClass(Test_1.class);//指定classjob.setOutputKeyClass(NullWritable.class);//指定输出的key格式job.setOutputValueClass(Text.class);//指定输出的value格式job.setMapperClass( Map.class);//调用上面到Map类作为Map任务代码FileInputFormat.addInputPath(job, new Path(args[0]));//输入路径FileOutputFormat.setOutputPath(job, new Path(args[1]));//输出路径job.waitForCompletion(true);return job.isSuccessful() ?0:1;}public static void main(String[] args) throws Exception{//运行任务int res=ToolRunner.run(new Configuration(), new Test_1(), args);System.exit(res);}}
注:实验步骤
1.在Ubuntu下运行eclipse,然后在控制台下开启hadoop的进程,这样eclipse才能与之进行连接。
2.在如图的DFS上右击,点击Disconnect,进行连接。
连接成功后会出现以下内容:
3.新建Map/Reduce工程:File->New->Project,然后选择Map/Reduce Project,Next,为工程起一个名字。
4.新建类class:在工程文件夹下的src上右击新建class即可。
5.编写程序
6.运行:Run->Run Configurations..
在Arguments下设置输入输出路径的参数为:
hdfs://localhost:9000/user/input
hdfs://localhost:9000/user/output
然后Run即可。(特别注意:运行之前一定要保证将output删除,并且将测试文档上传到input文件夹下)
7.运行结果:(运行后,刷新user文件夹会出现输出文件夹output,点击part-r-00000文件查看结果)
0 0
- Map-Reduce数据分析之一(实例1提取数据)
- Map-Reduce数据分析之一(实例2通话清单分析)
- Map-Reduce数据分析之二
- hadoop map-reduce数据过程
- 大数据之Map-reduce
- hadoop学习(四)Map/Reduce数据分析简述-示例-电话通讯清单
- hadoop学习(Map、Reduce、日志分析和数据挖掘、大数据处理)
- 大数据:大规模文件系统及map-reduce
- Hadoop大数据批处理 -Map/Reduce
- map-reduce阶段中的数据倾斜问题
- map reduce解决数据不平衡问题
- scikit-learn:4. 数据集预处理(clean数据、reduce降维、expand增维、generate特征提取)
- iPhone手机数据提取分析(一)
- sqoop导入数据地图-reduce job分析
- map reduce原理分析
- 数据库提取数据函数分析
- 大数据技术就在生活中: 登机牌、阅卷与 Map-Reduce(归约)
- 数据挖掘PageRank算法(网页排名原理)及Map-Reduce实现
- 【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群
- 第17章 区网控制者:Proxy服务器
- 什么是网络运营?
- 什么是搜索引擎?
- 被Oracle触发器给坑了
- Map-Reduce数据分析之一(实例1提取数据)
- 阿里巴巴
- 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
- 采访Broken Window 工作室: Unity制作游戏Grave
- 利用AVFoundation框架实现录音和播放(AVAudioSession、AVAudioRecorder、AVAudioPlayer)
- Ubuntu的主机名
- 冒泡排序
- Gradle 1.12 翻译——第十四章. 教程 - 杂七杂八
- Machine Learning机器学习课堂笔记6(梯度下降直观解释)