MapReduce算法(将数据按照 /OutputData/城市名称/日期(YYYY-MM-dd)/类型(固定Gn)/imsi.txt )
需求:
现有部分GN数据,数据为全省数据,解析GN数据,将数据按照 /OutputData/城市名称/日期(YYYY-MM-dd)/类型(固定Gn)/imsi.txt (有很多imsi)的结构,将相同城市,相同日期,相同imsi(国际移动用户标识),类型为Gn的数据汇总到一起,。
解析出新的IMSI, VULUME、CELLID、TAC、city、time
数据:
1|460002452699237|8655890276520178|8613786401241|21.176.70.136|29588|255|56042|221.177.173.83|221.177.173.64|221.177.173.35|221.177.173.35|2|cmnet|101|a788057f91cf3a89|1480752079784|1480752079788|18|26|0|33931|8.8.8.8|53|460|0|73|366|1|1|0|0|0|0|0|0|183.232.72.164|0|1|4|6|6|2260069379|||||||||||||||
数据说明:数据列的分隔符为“|”,截取出数据的第六个和第八个字段,两个字段使用“_”拼接,构成城市名称编号。
日期字段为第十七个数据。
Imsi数据为第二个数据
GnMapper
package GN.demo01;import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;public class GnMapper extends Mapper<LongWritable, Text,Text,Text> {private SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd");@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {String[] split = value.toString().split("\\|");context.write(new Text("/OutputData/"+ split[5]+"_"+split[7]+"/"+df.format(new Date(Long.parseLong(split[16])))+"/Gn/"+split[1]),new Text(value));}}
GnReducer
package GN.demo01;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;public class GnReducer extends Reducer<Text, Text, Text, NullWritable> {FSDataOutputStream fsDataOutputStream;@Overrideprotected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {Configuration configuration = context.getConfiguration();FileSystem fileSystem = null;try {fileSystem = FileSystem.get(new URI("hdfs://192.168.100.201:8020"),configuration);} catch (URISyntaxException e) {e.printStackTrace();}String str = "";fsDataOutputStream = fileSystem.create(new Path(key.toString() + ".txt"));for (Text value : values) {str += value.toString() + "\r\n";}byte[] bytes = str.getBytes();fsDataOutputStream.write(bytes,0,bytes.length);fsDataOutputStream.close();}}
GnDriver
package GN.demo01;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;public class GnDriver extends Configured implements Tool {@Overridepublic int run(String[] args) throws Exception {Configuration conf = new Configuration();
// conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");Job job = Job.getInstance(conf);
// job.setNumReduceTasks(30);job.setJarByClass(GnDriver.class);job.setInputFormatClass(TextInputFormat.class);TextInputFormat.addInputPath(job,new Path("E:\\2019-传智项目\\企业需求实战\\01_湖南移动项目需求\\数据\\gn"));job.setMapperClass(GnMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(Text.class);job.setReducerClass(GnReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(NullWritable.class);job.setOutputFormatClass(TextOutputFormat.class);TextOutputFormat.setOutputPath(job,new Path("E:\\2019-传智项目\\企业需求实战\\01_湖南移动项目需求\\数据\\Out"));boolean b = job.waitForCompletion(true);return b?0:1;}public static void main(String[] args) throws Exception{ToolRunner.run(new GnDriver(),args);}
}
MapReduce算法(将数据按照 /OutputData/城市名称/日期(YYYY-MM-dd)/类型(固定Gn)/imsi.txt )相关推荐
- MapReduce算法–了解数据连接第二部分
自从我上一次发布以来已经有一段时间了,就像我上一次大休息一样,我正在Coursera上一些课程. 这次是Scala中的函数式编程 原理和反应式编程原理 . 我发现它们都是不错的课程,如果有时间的话,建 ...
- MapReduce算法–了解数据联接第1部分
在本文中,我们继续执行一系列实现算法的系列,该算法在使用MapReduce进行数据密集型文本处理中找到,这一次讨论数据联接. 虽然我们将讨论在Hadoop中联接数据的技术并提供示例代码,但在大多数情况 ...
- SAP HR 考勤 PT60执行时报错“在$无工作中心数据 YYYY.MM.DD”问题解决
该问题出现的原因是:"时间评估的起始日期"小于"入职日期". ["时间评估的起始日期"等于PT数据中最早的"日期".] ...
- SAP HR 考勤 PT60执行时报错“在$无工作中心数据 YYYY.MM.DD”问题解决<转载>
原文链接:https://blog.csdn.net/csucoder_zone/article/details/105042403 该问题出现的原因是:"时间评估的起始日期"小于 ...
- mapreduce 算法_MapReduce算法–了解数据联接第二部分
mapreduce 算法 自从我上一次发布以来已经有一段时间了,就像我上一次大休息一样,我正在Coursera上一些课程. 这次是Scala中的函数式编程 原理和React式编程原理 . 我发现它们都 ...
- mapreduce 算法_MapReduce算法–了解数据联接第1部分
mapreduce 算法 在本文中,我们继续执行一系列实现算法的系列,该算法在使用MapReduce进行数据密集型文本处理中找到,这一次讨论数据联接. 虽然我们将讨论在Hadoop中联接数据的技术并提 ...
- Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称
Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称 这一节主要是使用xpath解析爬取全国城市名称 这里使用的网址是:空气质量历史数据查询 这一个案例体现的点主要是xpat ...
- java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...
fastJSON字符串类型数据中的日期转换为Java bean的日期对象 Person.java import java.io.Serializable; import java.util.Date; ...
- python读取excel日期和时间数据_python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。...
如何通过python写入date数据了? 写入还是很简单的. import xlwt3 import datetime as dt workbook = xlwt.Workbook() worksh ...
- android往天气接口里面传城市,Android使用中国天气网API数据通过城市名称获取天气情况...
项目要求在应用首页面展示本地当日天气的概况,首先想到的是google和雅虎,前者很久之前接触过,听说后来用不了了,后者由于邮箱事件的缘故个人不喜欢(虽然貌似苹果也用雅虎的天气预报),之后又想到了前段时 ...
最新文章
- php常量定义表达式,从表达式创建PHP类常量的最佳解决方法?
- 【深入理解JVM】JVM概述
- 迅为工业级iMX6Q开发板全新升级兼容PLUS版本|四核商业级|工业级|双核商业级...
- G面经prepare: Straight Partition of A Deck of Cards
- mysql数据库备份和还原的命令_Mysql数据库备份和还原常用的命令
- Pyinstaller打包过程中报错“AttributeError: 'str' object has no attribute 'items''”问题解决
- headtail命令
- QFIL and FASTBOOT
- Unity3D水下动物模型大集合
- 阿里云短信验证码发送
- visual studio 2010和注册码
- 【集合论】关系闭包 ( 自反闭包 | 对称闭包 | 传递闭包 )
- 陈洁kiki宠粉节狂欢夜观看破千万!四年磨一剑将宠粉做到极致
- OpenGL法线贴图
- 网络安全风险无处不在
- MT7688 openwrt 4G调试
- Eclipse is not responding
- 游戏开挂的罪与非罪——从“王者荣耀外挂案”说起
- 【无标题】vue -解决“You may use specia I comments to disa some warnings. ble Use//eslint-disable-next-line
- 最长公共子序列_使用序列化查找对象中的脏字段