当前位置: 首页 > wzjs >正文

莱特币做空网站网络营销推广渠道

莱特币做空网站,网络营销推广渠道,网站转跳怎么做,投资建设一个网站多少钱一、MapReduce原理 首先要了解一下MapReduce的几个过程,每个数据集中需要编写的逻辑会有所不同,但是大致是差不多的 1、MapReduce大致为这几个过程: 1、读取数据集并根据文件大小128MB拆分成多个map同时进行下面步骤 2、Map: 匹配和数据筛…

一、MapReduce原理

首先要了解一下MapReduce的几个过程,每个数据集中需要编写的逻辑会有所不同,但是大致是差不多的

1、MapReduce大致为这几个过程:

1、读取数据集并根据文件大小128MB拆分成多个map同时进行下面步骤
2、Map: 匹配和数据筛选: Map输入(MI)+ Map输出(MO)
3、Shuffle&Sort:洗牌排序阶段,Hadoop自带的方便后续合并
4、Reduce: 合并和数据处理: Reduce输入(RI)+ Reduce输出(RO)

在整个MapReduce过程中数据以键值对形式保存传输

MI阶段:会将数据集输入并且转成偏移量和行的关系
MO阶段:会将MI的键值对里有用的数据转成键值对关系,这里是需要写代码写逻辑
RI阶段:会将MO的数据合并
RO阶段:会将RI阶段数据进行逻辑算法处理,这里是需要写代码写逻辑

二、MapReduce单词计数例子

1、图文解析
a) 首先,在自己电脑D盘创一个文本文件WordCount.txt,内容为:
Hadoop,Hbase,Java,Linux,MySQL,Flume,Kafka,Sqoop
Hadoop,Hbase,Java,Linux
Linux,MySQL,Flume,Kafka,Sqoop
Java,Linux,MySQL,Flume
Hbase,Java,Linux,MySQL,Flume,Kafka,Sqoop
Hbase,Java,Linux,MySQL
Kafka,Sqoop

在这里插入图片描述
现在,要求实现计算不同的单词出现了几次

b) 实现过程

1、MI阶段:会将数据集输入并且转成偏移量和行的关系
在这里插入图片描述
2、MO阶段:会将MI的键值对里有用的数据转成键值对关系,这里是需要写代码写逻辑,在这里我们要实现单词计数,有用的东西就是单词本身以及个数,k1是没用的,所以在这个阶段需要把v1的字符串按照分隔符拆成数组,把单词通过数组循环取出来当作k2,并且把每一个单词赋值数量为1当作v2
在这里插入图片描述
3、Shuffle&Sort阶段:洗牌排序
在这里插入图片描述
4、RI阶段:会将MO的数据合并
在这里插入图片描述
5、RO阶段:会将RI阶段数据进行逻辑算法处理,这里是需要写代码写逻辑,此例子需要计数,所以把v3数据相加,k3直接转k4
在这里插入图片描述

2、代码解析

现在图文理解了来看看代码的过程
一共要写三坨代码,Map的,Reduce的以及Driver提交程序
在这里插入图片描述
在写代码之前要了解Hadoop代码中数据类型有变化,,String对应Text,其他类型全部加上后缀Writeable,例如java中如果是int类型,MapReduce中写代码对应就是IntWriteable,为啥不一样呢,因为hadoop分布式中数据会跨电脑传输处理,会涉及到互联网带宽之类的,普通java没发传,不安全,而hadoop类型传输时可以序列化反序列化(加密解密)

a、Map部分:
1)首先先了解下别人写的代码的规则使用方式:

Map代码中:

1、要继承Mapper
在这里插入图片描述
2、要重写map方法实现k2,v2的逻辑
在这里插入图片描述
Reduce代码中:

3、要继承Reducer
在这里插入图片描述
4、要重写reduce方法实现k4,v4的逻辑
在这里插入图片描述

2)可以开始写自己的代码啦:

1、创一个maven项目,把pom依赖弄好

在这里插入图片描述

    <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.3.0</version></dependency>

2、新建一个类,我这取名WordCount

在这里插入图片描述
3、引入的依赖包内容为

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

4、Map部分,结合上面的图片解析模块和代码编写规则理解

在这里插入图片描述

//创建map类取名wordcountmapper并继承Mapperpublic static class wordcountmapper extends Mapper<LongWritable, Text, Text, IntWritable> {//重写map方法并写需要的业务逻辑protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//把v1行数据转成字符串提出来到line变量里String line = value.toString();//把line的字符串按照我们文件是逗号进行分割,然后存储到字符串数组strings里面String[] strings = line.split(",");//通过for循环把数组里面的单词一个一个循环拿出来放到str变量里for (String str : strings) {//循环时把str单词存为k2,并赋值1作为v2context.write(new Text(str), new IntWritable(1));}}

5、Reduce部分,结合上面的图片解析模块和代码编写规则理解

在这里插入图片描述

    //创建类取名wordcountreducer并继承Reducerpublic static class wordcountreducer extends Reducer<Text, IntWritable, Text, IntWritable> {//重写reduce方法并写需要的业务逻辑protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {//设置一个变量用于计数,初始为0int sum=0;//将v3的数组的值进行循环相加for(IntWritable v:values){//最终得到计数的值sum=sum+v.get();}//将k3直接转成k4,将sum作为v4context.write(key,new IntWritable(sum));}}

6、主函数实现代码运行

在这里插入图片描述

public static void main(String[] args) throws Exception {Job job = Job.getInstance(); //Job类job对象实体化job.setMapperClass(wordcountmapper.class);//job对象的setMapperClass方法指定map是哪个类job.setMapOutputKeyClass(Text.class);//job对象的setMapOutputKeyClass方法指定k2类型job.setMapOutputValueClass(IntWritable.class);//job对象的setMapOutputValueClass方法指定v2类型job.setReducerClass(wordcountreducer.class);//job对象的setReducerClass方法指定reduce是哪个类job.setMapOutputKeyClass(Text.class);//job对象的setMapOutputKeyClass指定k4类型job.setMapOutputValueClass(IntWritable.class);//job对象的setMapOutputValueClass指定v4类型FileUtils.deleteDirectory(new File("d:\\mapreduce"));//若k4v4结果输出文件夹存在则删了再创建FileInputFormat.setInputPaths(job, new Path("d:\\WordCount.txt"));//数据集文件在哪个路径FileOutputFormat.setOutputPath(job, new Path("d:\\mapreduce\\"));//结果保存到哪个路径boolean completion = job.waitForCompletion(true);if (completion) {System.out.println("成功,请去指定文件夹查看结果文件");} else {System.out.println("失败");}}

附上整个完整代码:

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;public class WordCount {//创建类取名wordcountmapper并继承Mapperpublic static class wordcountmapper extends Mapper<LongWritable, Text, Text, IntWritable> {//重写map方法并写需要的业务逻辑protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//把v1行数据转成字符串提出来到line变量里String line = value.toString();//把line的字符串按照我们文件是逗号进行分割,然后存储到字符串数组strings里面String[] strings = line.split(",");//通过for循环把数组里面的单词一个一个循环拿出来放到str变量里for (String str : strings) {//循环时把str单词存为k2,并赋值1作为v2context.write(new Text(str), new IntWritable(1));}}}//创建类取名wordcountreducer并继承Reducerpublic static class wordcountreducer extends Reducer<Text, IntWritable, Text, IntWritable> {//重写reduce方法并写需要的业务逻辑protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {//设置一个变量用于计数,初始为0int sum=0;//将v3的数组的值进行循环相加for(IntWritable v:values){//最终得到计数的值sum=sum+v.get();}//将k3直接转成k4,将sum作为v4context.write(key,new IntWritable(sum));}}public static void main(String[] args) throws Exception {Job job = Job.getInstance(); //Job类job对象实体化job.setMapperClass(wordcountmapper.class);//job对象的setMapperClass方法指定map是哪个类job.setMapOutputKeyClass(Text.class);//job对象的setMapOutputKeyClass方法指定k2类型job.setMapOutputValueClass(IntWritable.class);//job对象的setMapOutputValueClass方法指定v2类型job.setReducerClass(wordcountreducer.class);//job对象的setReducerClass方法指定reduce是哪个类job.setMapOutputKeyClass(Text.class);//job对象的setMapOutputKeyClass指定k4类型job.setMapOutputValueClass(IntWritable.class);//job对象的setMapOutputValueClass指定v4类型FileUtils.deleteDirectory(new File("d:\\mapreduce"));//若k4v4结果输出文件夹存在则删了再创建FileInputFormat.setInputPaths(job, new Path("d:\\WordCount.txt"));//数据集文件在哪个路径FileOutputFormat.setOutputPath(job, new Path("d:\\mapreduce\\"));//结果保存到哪个路径boolean completion = job.waitForCompletion(true);if (completion) {System.out.println("成功,请去指定文件夹查看结果文件");} else {System.out.println("失败");}}}
http://www.dtcms.com/wzjs/522044.html

相关文章:

  • 公益免费空间主机seo搜索引擎优化
  • 网站大图做多大尺寸seo网站有优化培训班吗
  • 服装设计公司主要做什么百度推广seo
  • 为什么做的网站有的有弹窗有的没有网络营销的策略
  • 网站广告推广怎么做的百度网站制作联系方式
  • 做网站需要具备什么要求seo竞价培训
  • 优化 导航网站seo网站营销公司哪家好
  • 宜昌网站建设0717webseo综合查询中的具体内容有哪些
  • 温州网站建设制作公司外贸网站有哪些平台
  • 珠海购物网站制作国外网站搭建
  • 网络游戏赚钱排行榜宁波网站建设网站排名优化
  • 长清网站建设营销推广文案
  • wordpress主题标签关键词seo网络推广员招聘
  • 网站模板尺寸制作网站的工具
  • 自己做一个网站多少钱大数据精准营销系统
  • 山西省政府网站建设孝感seo
  • 上海建设三类人员网站希爱力跟万艾可哪个猛
  • 网站开发流程的三个部分杭州seo网络公司
  • 内蒙古网站建设流程巨量关键词搜索查询
  • 给企业做网站的平台谷歌外贸网站
  • dw建设网站如何加入音乐重庆疫情最新情况
  • 中疾控发布全国新冠感染情况裤子seo关键词
  • 深圳网站建设价格多少武汉标兵seo
  • 武汉专业网站建设品牌公关公司
  • 丰县数据网站建设多少钱快速的网站设计制作
  • 怎么做百度联盟网站抖音广告怎么投放
  • 根据网站软件做报告线上营销模式有哪些
  • 国外做的比较好的网站seo关键词如何设置
  • 51电子网seo网站推广是什么意思
  • 动态网站建设实训要求网页快照