用mapreduce去访问文件中每个用户的用户名
来源:互联网 发布:互联网mysql开发规范 编辑:程序博客网 时间:2024/05/16 12:39
需要准备的文件:
<1>类似与上图的.txt文件,注意,文件编码格式为UTF-8,为的是可在编程软件中正常识别,上面的字段分别是: 用户名 登录状态 ip地址
并且字段之间用空格隔开
<2>已经搭建好的集群,安装好了hadoop,因为要使用mapreduce,已在一个代码编辑工具中与hadoop成功连接,这里用的编辑工具是eclipse,用到的语言是java代码
实现流程
<1>上传上述的文件到hdfs上,记住上传的路径,这里可以使用SecureFXPor或FileZila与Xshell的组合去实现本地文件与linux系统是传输,在用hdfs命令去把linux系统上的文件传输到hdfs上
<2>在代码编辑器上新建一个maven工程
如果在新建里面没有MavenProject的选项,就选择Other,在里面搜索Maven,点击继续,
接着,操作下面图片上的内容
<3>新建一个包—->新建一个类—>开始写代码
/*分析:由于要统计用户名,只是对数据进行一个简单的分割,那么map的作用就是分割,reduce的作用只是做一个传值的作用,可以把用户名当作key,value不设置值*/public class UserName{ //定义map public static class UserNameMap extends Map<LongWritable,Text,Text,NullWritable>{ //定义变量 private String[] infos; private NullWritable oValue = NullWritable.get(); private Text oKey = new Text(); //实现里面的map方法 @Override protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, NullWritable>.Context context)throws IOException, InterruptedException{ //解析一行文档里的内容,\\s表示以空格解析表格中的一行数据 infos = value.toString.split("\\s") //观看文档,用户名在第一个字段,解析后其索引是0,为其赋值 oKey.set(infos[0]); //输出key和value的值 context.write(oKey,oValue); } }//定义reduce,在这里穿个值就行,其他啥事也不用做public static class UserNameReduce extends Reduce<Text, NullWritable, Text, NullWritable>{ private final NullWritable oValue = new NullWritable.get(); //实现reduce方法 @Override protected void reduce(Text key,Iterable<NullWritable> values,Reducer<Text, NullWritable, Text, NullWritable>.Context context)throws IOException, InterruptedException{ context.write(key,oValue); } }//组装map和reduce,会遇到异常,直接抛出来就好public static void main(String[] args)throws Exception //创建配置对象 Configuration configuration = new Configuration(); //创建job对象 Job job = Job.getInstance(configuration); //设置jar包的类,括号里面写 类名.class job.setJarByClass(UserNane.class); job.setJobName("统计文件中的每个用户的用户名"); job.setMapperClass(UserNameMapper.class); job.setReducerClass(UsernameReducer.class); //设置输出文件格式,由于map的输出格式和reduce的输出格式一样,只写一个reduce的文件输出格式就好 job.setOutputKeyClass(Text.class); job.setOutputValueClass(NullWritable.class); //设置数据源 Path inputPath = new Path("hdfs上面存放文件的路径"); Path outputPath = new Path("要在hdfs上存放输出文件的路径"); FileInputFormat.addInputPath(job,inputPath); outputPath.getFileSystem(configuraction).delete(outputPath,true); FileOutputForMat.setOutputPath(job,outputPath); System.exit(job.waitForCompletion(true)?0:1); }
<4>运行结果,会把用户名给列举出来
阅读全文
0 0
- 用mapreduce去访问文件中每个用户的用户名
- IT忍者神龟之oracle 中一个用户怎么可以不使用用户名访问其他用户的表
- sharepoint 2007 设置访问用户链接时,不跳转到ssp的页面用户中去
- 在java项目中,如何限制每个用户访问接口的次数?
- ubuntu下的Samba配置:使每个用户可以用自己的用户名和密码登录自己的home目录
- ubuntu下的Samba配置:使每个用户可以用自己的用户名和密码登录自己的home目录
- ubuntu下的Samba配置:使每个用户可以用自己的用户名和密码登录自己的home目录
- ubuntu下的Samba配置:使每个用户可以用自己的用户名和密码登录自己的home目录
- 通过MapReduce统计每个单子在每个文件中出现的次数(FileSplit的使用),单词作为key,所在文本和次数作为value进行统计
- is_uploaded_file 这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件
- 访问Mat中每个像素的值
- 访问Mat中每个像素的值
- 访问图像中每个像素的值
- 查询每个用户最新的日志访问信息
- [MapReduce]找出每个用户最喜欢po贴的时间(以小时为单位)
- 【个人笔记重点,不作为参考】主题:ubuntu下的Samba配置:使每个用户可以用自己的用户名和密码登录自己的home目录
- MapReduce将小文件合并成大文件,并设置每个切片的大小的案例
- logback实现每个用户一个独立的日志文件
- 第五周 项目二 建立链栈算法库
- Java中的Map
- hive常用函数
- 最全团队管理手册
- 顶级性能配置+HiFi Xplay6全面提升手游视听体验
- 用mapreduce去访问文件中每个用户的用户名
- 汇聚全球物联网精英 COMPUTEX助攻万物互联商机
- 再次高喊启动上市 Airbnb新融资股东显露中方资本身影
- Boom-Shakalaka 深度剖析锂电池爆炸原理
- ofo上海免押金:芝麻信用需达650分
- 向海龙亲任百度糯米总经理 曾良因违纪被解职
- 取石子(花生米三)
- 企业面试成本
- 升级Android Studio 3.0,报Unable to resolve dependency