自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 MapReduce编程组件之OutputFormat

和InputFormat是所有输入类的基类一样,OutputFormat也是Mapreduce所有输出类的基类。OutputFormat是一个抽象类,有三个重要的抽象方法: OutputFormat有众多子类:NullOutputFormat、FileOutputFormat、FilterOutputFormat、和DBOutputFormat。FileOutputFormat有子类:TextOutputFormat、MapFileOutputFormat、SequenceFileOutput

2024-10-22 15:17:51 1030

原创 MapReduce编程组件之其他

如果也没有设置SortComparator,就用Key的compareTo()方法定义的规则。(它会new WritableComparator,所以也是看new的对象的compare()。只不过这个compare()方法内部调用compareTo()的方法,所以说用compareTo()方法定义的规则。如果连续(注意,一定连续)的两条或多条记录满足同组(即compare()方法返回0)的条件,即使key不相同,他们的value也会进入同一个values,执行一个reduce方法。

2024-10-22 00:23:53 268

原创 MapReduce编程组件之InputFormat(2)

SequenceFile文件是Hadoop用来存储二进制形式键值对的文件。它可以看作是一个容器,把所有的文件打包到SequenceFile中可以高效存储和管理小文件。优点:支持记录或者块压缩,支持切片。缺点:需要一个合并文件的过程,且合并后的文件不方便查看。具体需求:将多个小文件合并成一个存储的形式为文件路径+名称为key,文件内容为value。自定义InputFormat步骤:1.自定义InputFormat类,继承FileInputFormat。

2024-10-21 20:41:26 717

原创 MapReduce编程组件之InputFormat(1)

具体的子类对象是由InputFormat决定的,默认的输入格式是TextInputFormat,因此默认的RecordReader也是相对应的LineRecordReader。从MapContentImpl类中的方法可见,content.getCurrentKey(),content.getCurrentValue()以及nextKeyValue(),其实都是对RecordReader方法的封装,即MapContext是直接使用传入的RecordReader来对InputSplit进行“K-V对”读取的。

2024-10-21 00:03:32 2464

原创 浅析WritableComparator

仔细分析这个方法,首先会尝试获取JobContext.GROUP_COMPARATOR_CLASS(Job.setGroupingComparator)这个属性值,如果我们自定义了一个比较器的类,并在Driver类中设置了该属性的值,那么设置的值就作为比较器对象,否则就返回默认值null。它类似一个注册表,存储以<K,V>的方式存储着继承WritableComparator的子类Comparator,K是Class类型,V是子类Comparator的对象。至于是否优化,就看如何重写的compare方法了。

2024-10-17 11:06:00 1731

原创 从Java序列化到Hadoop序列化

一个原生的类讲解一下,自定义比较器讲解一下,内部类讲解一下。WritableComparator是 WritableComparables的比较器。这个基础实现类使用是自然的排序规则,如果要使用其他的排序规则,需要重写compare(WritableComparable,WritableComparable)方法。

2024-10-15 15:56:40 540

原创 我的小结:脏写、脏读、不可重复读、幻读、两类丢失更新

3.个人的理解:丢失更新覆盖的是【commit】的数据,脏写覆盖的时候【没有commit】的数据。在一般情况下,一个已经提交的事务是不会被其他事务影响的,但是【一个事务中读写操作存在依赖关系】这种情况下会出现丢失更新,这种特别的情况是【业务逻辑需要的】。也就是说,一个事务读到的数据不受其他事务curd的影响,前后读取的数据是不一致的。事务B的修改的数据是“非法的”,因为从结果上看,这个数据"没有commit",而事务A的数据commit成功。2.覆盖丢失:事务A覆盖事务B提交的数据,造成事务B的操作丢失。

2024-09-27 21:07:07 1769

原创 我的小结:树的相关总结思考,不涉及代码。

【代码】我的小结:树的相关总结思考,不涉及代码。

2024-09-26 21:13:44 285 1

原创 数据库系统原理之数据查询的总结

数据查询的一些总结和感想(不全面,主要是连接查询和嵌套查询)等值连接select products.maker from products,laptops where products.model=laptops.model and laptops.hd>=100;自然连接select maker from products natural join laptops wh...

2019-04-25 15:43:42 969

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除