欢迎来到天天文库
浏览记录
ID:27161011
大小:976.01 KB
页数:40页
时间:2018-12-01
《《的类型与格式》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MapReduce的类型与格式夏瑞仙MapReduce数据处理模型非常简单:map和reduce函数的输入和输出是键/值对(key/valuepair)。本章深入讨论MapReduce模型,重点介绍各种类型的数据(从简单文本到结构化的二进制对象)如何在MapReduce中使用引言目录MapReduce的类型默认的MapReduce作业输入格式输入分片与记录文本输入二进制输入多种输入数据库输入(和输出)输出格式文本输出二进制输出多个输出延迟输出数据库输出MapReduce的类型map:(K1,V1)list(K2,V2)reduce:(K2,list(V2))list(K3,V3
2、)一般来说,map函数输入的键/值的类型(K1和V1)不同于输出类型(K2和V2)reduce函数的输入类型必须与map函数的输出类型相同,但reduce函数的输出类型可以不同于输入类型MapReduce的类型map:(K1,V1)list(K2,V2)combine:(K2,list(V2))list(K2,V2)reduce:(K2,list(V2))list(K3,V3)combine函数与reduce函数通常是一样的,在这种情况下,K3与K2类型相同,V3与V2类型相同MapReduce的类型partition:(K2,V2)integerpartition函数将中间的
3、键/值对(K2和V2)进行处理,并且返回一个分区索引。实际上分区单独由键决定MapReduce的类型为什么不能结合mapper和reducer导出类型呢?默认的MapReduce作业默认的输入格式是TextInputFormat,它产生的键类型是LongWritable,值类型是Text(文本行)默认的mapper是IdentityMapper,它将输入的键和值原封不动地写到输出中IdentityMapper是一个泛型类型,它可以接受任何键或值的类型,只要map输入和输出键的类型相同,值的类型也相同就可以默认的MapReduce作业默认的partitioner是HashPart
4、itioner,它对每条记录的键进行哈希操作以决定该记录应该属于哪个分区。每个分区对应一个reducer任务键的哈希码被转换为一个非负整数,它由哈希值与最大的整型值做一次按位与操作而获得,然后用分区数进行取模操作,来决定该记录属于哪个分区索引默认的MapReduce作业默认的reducer是IdentityReducer,它也是一个泛型类型,它简单的将所有的输入写到输出中大多数MapReduce程序不会一直用相同的键或值类型,所以就想上一节中描述的那样,必须配置作业来声明使用的类型默认的Streaming作业必须提供一个mapper因为默认的输入格式TextInputForma
5、t产生的键类型是LongWritable,值类型是Text,而Streaming的输出键和值(包括map的键和值)都是Text类型。默认的IdentityMapper无法将LongWritable类型的键转换为Text类型的键Streaming中的键和值Streaming应用可以决定分隔符,该分隔符用于通过标准输入把键/值对转换为一串比特值发送到map或reduce函数。分隔符默认情况下是Tab(制表符),但如果键或值本身含有Tab,它能将分隔符修改成其他符号输出键/值对时,也需要用一个可配置的分隔符来进行分割Streaming中的键和值输入格式输入格式输入分片与记录一个输入分
6、片(split)就是由单个map处理的输入块每条记录就是一个键/值对在数据库的场景中,一个输入分片对应于一个表上的若干行,而一条记录对应到一行(DBInputFormat正是这么做的,它这种输入格式用于从关系数据库读取数据)。输入格式输入分片与记录输入分片(split)在Java中被表示为InputSplit接口InputSplit包含一个以字节为单位的长度和一组存储位置(即一组主机名)输入格式输入分片与记录InputSplit是由InputForamt创建的。InputForamt负责产生输入分片并将它们分割成记录。输入格式FileInputFormat类FileInputF
7、ormat是所有使用文件作为其数据源的InputFormat实现的基类提供了两个功能:一个定义哪些文件包含在一个作业的输入中,一个为输入文件生成分片的实现。输入格式FileInputFormat类的输入路径输入格式FileInputFormat类的输入路径add和set方法允许指定包含的文件。如果需要排除特定文件,可以使用setInputPathFilter()方法设置一个过滤器即使不设置过滤器,也会使用一个默认的过滤器来排除隐藏文件(名称中以"."和"_"开头的文件)输入格式FileInp
此文档下载收益归作者所有