Java基本类型

Writable

序列化大小(字节)

布尔型(boolean)

BooleanWritable

1

字节型(byte)

ByteWritable

1

整型(int)

IntWritable

4

VIntWritable

1~5

浮点型(float)

FloatWritable

4

长整型(long)

LongWritable

8

VLongWritable

1~9

双精度浮点型(double)

DoubleWritable

8

[root@master ~]# rz -E
rz waiting to receive.
[root@master ~]# ls
ac.sh                                        words.txt  文档
anaconda-ks.cfg                              公共       下载
dump.rdb                                     模板       音乐
initial-setup-ks.cfg                         视频       桌面
mysql57-community-release-el7-10.noarch.rpm  图片
[root@master ~]# cat words.txt
java,c,c++,sql,scale,python
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix[root@master ~]# mv words.txt /usr/local/soft/data/
[root@master ~]# cd /usr/local/soft/data/
[root@master data]# ls
new_db.sql  student.sql         theZen.txt  words.txt
score.sql   theZenOfPython.txt  wordcount
[root@master data]# cat words.txt
java,c,c++,sql,scale,python
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
phoenix
mysql,springboot,redis
hadoop,hive,hbase,spark,flink
kafka,sqoop,flume,datax,kettle,flink
[root@master data]# hdfs dfs -put words.txt /data/wc/input/
package com.shujia.MapReduce;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
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.output.FileOutputFormat;import java.io.IOException;public class Demo01WordCount {//Map任务/***继承Mapper类,指定输入的K-V的类型以及输出K-V的类型* 然后重写map方法*/public static class MyMapper extends Mapper<LongWritable, Text,Text, IntWritable> {@Override/*** key 偏移量* value 一行数据* context MR任务运行的是上下文环境,可以获取当前运行的配置等其他信息*          主要用于将map端构建好的K-V进行输出*/protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {//自己的map逻辑//按分割符切分除每一个单词String[] splits = value.toString().split(",");for (String word : splits) {//以单词做为key,1作为value,构建好输出的K-V//再通过context输出/*** java,c,c++,sql,scale,python* 输出:java,1* c,1* c++,1* sql,1* scale,1* python,1*/Text outPutKey = new Text(word);IntWritable outputValue = new IntWritable(1);context.write(outPutKey,outputValue);}}}/***继承Reducer类,指定输入的K-V的类型(同map端的输出K-V类型保存一致)以及输出K-V的类型* 然后重写map方法*///Reduce任务public static class MyReducer extends Reducer<Text, IntWritable,Text,IntWritable>{@Override/*** key 经过shuffle过程,相同的K进入到同一个reduce* values 相同的Key对应的value的一个“集合”* context 主要用于输出数据到HDFS*/protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {int sum=0; //用于保存最后的结果for (IntWritable value : values) {sum+=value.get();}//将最后的结果输出context.write(key,new IntWritable(sum));}}//Driver程序,主要负责配置和提交任务public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://master:9000");//创建一个MapReduce的jobJob job = Job.getInstance(conf);//配置任务job.setJobName("Demo01WordCount");//设置任务运行哪个类job.setJarByClass(Demo01WordCount.class);//设置Reduce的数量,默认是1,最终生成文件的数量同Reduce的数量一致job.setNumReduceTasks(3);//配置map端//指定map运行时哪一个类job.setMapperClass(MyMapper.class);//配置Map端输出的key类型job.setMapOutputKeyClass(Text.class);//配置Map端输出的value类型job.setMapOutputValueClass(IntWritable.class);//配置Reduce端//指定Reduce运行时哪一个类job.setReducerClass(MyReducer.class);//配置Reduce端输出的key类型job.setOutputKeyClass(Text.class);//配置Reduce端输出的value类型job.setOutputValueClass(IntWritable.class);//配置输入输出路径/*** hdfs dfs -mkdir /data/wc/input* hdfs dfs -put words.txt /data/wc/input*/FileInputFormat.addInputPath(job,new Path("/data/wc/input"));Path path = new Path("/data/wc/output");FileSystem fs = FileSystem.get(conf);//判断输出路径是否存在,存在则删除if (fs.exists(path)){fs.delete(path,true);}//输出路径已存在,会报错FileOutputFormat.setOutputPath(job,path);//等待任务完成job.waitForCompletion(true);}/*** 1.将words.txt上传至虚拟机并使用HDFS命令上传至HDFS*  hdfs dfs -mkdir /data/wc/input*  hdfs dfs -put words.txt /data/wc/input*  2.将代码通过maven的package打包成jar包,并上传至虚拟机*  3.使用命令提交任务*  hadoop jar hadoop-1.0-SNAPSHOT.jar com.shujia.MapReduce.Demo01WordCount*  查看日志:在任务运行时会自动生成一个applicationId*  yarn logs -applicationId application_1647858149677_0004*  也可以通过historyserver去查看,因为任务真正运行在NodeManager中,日志可能会分散*  historyserver可以负责从Nodemanager中收集日志到Master中方便查看日志*  启动historyserver:在Master上启动即可*  mr-jobhistory-daemon.sh start historyserver*  http://master:19888*/
}
[root@master data]# cd ..
[root@master soft]# ls
0??   hadoop-2.7.6  redis        shell01   zookeeper-3.4.6
A??   jdk1.8.0_171  redis-6.2.6  show
data  packages      shell        test.txt
[root@master soft]# mkdir jars
[root@master soft]# mv data/hadoop-1.0-SNAPSHOT.jar ./jars/
[root@master soft]# ls
0??   hadoop-2.7.6  packages     shell    test.txt
A??   jars          redis        shell01  zookeeper-3.4.6
data  jdk1.8.0_171  redis-6.2.6  show
[root@master soft]# cd jars/
[root@master jars]# ls
hadoop-1.0-SNAPSHOT.jar
[root@master jars]# pwd
/usr/local/soft/jars
[root@master jars]# hadoop jar hadoop-1.0-SNAPSHOT.jar com.shujia.MapReduce.Demo01WordCount
[root@master jars]# hdfs dfs -cat /data/wc/output/part-r-00000
c++   1
datax   4
hbase   4
hive    4
kettle  4
mysql   4
spark   4
package com.shujia;public class HashCode {public static void main(String[] args) {String k1="spark";String k2="c++";String k3="datax";String k4="hbase";String k5="hive";String k6="kettle";String k7="mysql";int numReduceTasks = 3;System.out.println(k1.hashCode()%numReduceTasks);System.out.println(k2.hashCode()%numReduceTasks);System.out.println(k3.hashCode()%numReduceTasks);System.out.println(k4.hashCode()%numReduceTasks);System.out.println(k5.hashCode()%numReduceTasks);System.out.println(k6.hashCode()%numReduceTasks);System.out.println(k7.hashCode()%numReduceTasks);}
}
[root@master ~]# mr-jobhistory-daemon.sh start historyserver
starting historyserver, logging to /usr/local/soft/hadoop-2.7.6/logs/mapred-root-historyserver-master.out
[root@master ~]# yarn logs -applicationId application_1647858149677_0004

MapReduce1,HashCode相关推荐

  1. 【Java8】堆栈/队列/数组/链表/红黑树,List/set子接口,hashcode/hashset,Map/内部接口,/统计字符个数,debug,斗地主,Collections,TreeSet

    文章目录 1.堆栈/队列/数组/链表:数据结构即计算机组织管理数据的方式,堆栈指的是内存图中的栈,不是堆 2.红黑树:二查,二查平,二查平1倍 3.List子接口:集合,IndexOutOfBound ...

  2. 【Java5】String类,StringBuilder类,ArrayList类,Object类(toString,equals,hashCode)

    文章目录 1.String类:字符串常量在Java中不属于基本数据类型, 而是引用/类类型 1.1 使用:new String(...) 1.2 判断:equals函数是用来比较两个对象是否相等 1. ...

  3. IntelliJ IDEA:使用Google Guava生成equals,hashCode和toString

    问题 在Java领域,我们经常需要编写equals , hashCode和toString方法. 老实说,这通常只是一个样板义务. 得益于智能IDE,我们通常不再自己这样做. 我们只是让和IDE一起努 ...

  4. 番石榴的对象类:Equals,HashCode和ToString

    如果您有幸使用JDK 7 ,那么新的可用Objects类 ( 至少对我来说 )是实现"通用" Java对象方法(例如equals(Object) [with Objects.equ ...

  5. java中equals,hashcode和==的区别

    原文地址http://blog.csdn.net/hla199106/article/details/46907725 1.== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 ...

  6. 关于hash,hashCode, hashMap,红黑树

    小刘老师讲HashMap源码 小刘老师讲红黑树 hash,hashCode,hashMap 1.前提知识 数组: 列表: 散列表 什么是hash? hash也称散列,哈希,基本原理就是把任意长度的输入 ...

  7. List去重为什么要写equals(),hashCode()方法

    一,各个集合的特点: Collection(集合):容器,用于存放对象(引用类型.基本类型需要自动装箱) List(列表):元素有序,元素可以重复 (有索引). 通过元素的equals()方法判断是否 ...

  8. Object类—复写equals方法,hashCode方法,toString方法

    Object:所有类的根类. Object是不断抽取而来,具备着所有对象都具备的共性内容. class Person extends Object {private int age;Person(in ...

  9. Java双等号,Equals(),HashCode()小结

    默认情况 - 双等号==,比较的是内存地址. - equals(),默认比较的是内存地址. - hashCode(),默认返回的是object的内存地址. String中方法改写的情况 经常会遇到需要 ...

最新文章

  1. 工业界 vs. 学术界: 一个年轻员工的视角
  2. boost::graph模块实现分布式压缩稀疏行图类型的测试
  3. java使用ajax异步刷新_Jquery的Ajax实现异步刷新
  4. VHDL基本门电路和数值比较器的设计
  5. ie的window.open 未指明的错误_快递问题公告中错误使用“黑恶势力”等言辞 青岛工学院致歉...
  6. cocos creator 方法数组_Creator | 优化三剑客之内存!
  7. 下载的长数据怎么分开R语言_TCGA数据库单基因gsea作业之COAD-READ
  8. python中的and_我想问下python中 逻辑与:“”和“and”的区别
  9. c1200 写频软件_金飞讯写频软件-金飞讯a66写频软件(金飞讯a66对讲机写频软件)1.0 一键安装版-东坡下载...
  10. 全概率公式和贝叶斯公式的应用 (概统1)
  11. 算数平均数、中位数、众数和几何平均数
  12. 使用C++调用Socket接口实现简易TCP服务器
  13. CF1137A/1138C Skyscrapers
  14. 长期在计算机房内会有多大辐射,机房辐射范围和预防辐射?计算机房里面适用的屏蔽隔离防辐射材料是什么?...
  15. 魔兽世界选择服务器未响应,魔兽世界7.0军团再临常见技术性问题解决方案汇总...
  16. 【数据分析】京东平台用户画像分析
  17. Linux编译QT项目时报错: error: cannot find -lGL 的解决方法
  18. requires INJECT_EVENTS permission
  19. vue.js 的学习
  20. 查询无限级/三级分销的简单易用SQL

热门文章

  1. 实现微信网页授权登录
  2. SpringMVC和SSM整合步骤(最详细)
  3. 简单易懂且全面的http知识点详细总结
  4. chosen.jquery.js 、chosen-select 源码修改控制 chosen:updated 方法动态更新下拉框选项不更新搜索框值 ,chosen 实现远程搜索加载下拉选项
  5. RXD's date
  6. 省市二级联动数据库生成代码(JAVA)
  7. 3ds max .mse加密文件解密
  8. C语言从0到1算法小白训练营——day1
  9. 网云穿-免费域名注册
  10. Joomla 模板常用技巧函数收集