- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(Spark中运行wordcount
Spark中运行wordcount
Wordcount源码:
val hdfsFile = sc.textFile(args(1))
val flatMapRdd = hdfsFile.flatMap(s = s.split( ))
val filterRdd = flatMapRdd.filter(_.length == 2)
val mapRdd = filterRdd.map(word = (word, 1))
val reduce = mapRdd.reduceByKey(_ + _)
1:首先调用textFile()函数。
textFile源码:(位于sparkContext中)
def textFile(path: String, minPartitions: Int = defaultMinPartitions): RDD[String] = {
assertNotStopped()
hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],
minPartitions).map(pair = pair._2.toString).setName(path)
}
可以看到该函数的最终返回结果是一个RDD,至于是什么类型的RDD,后面会做出解释。该函数的第一个参数是要加载的文件的路径,第二个参数是Hadoop RDD默认的最小分片数目,为2.函数体是一个hadoopFile函数,第一个参数是文件路径,第二个参数是InputFormat的类型,第三个参数是Mapper的第一个类型,第四个参数是Mapper的第二个类型。第五个参数是Hadoop RDD默认的最小分片数目。下面来看一个hadoopFile这个函数。
1.1 hadoopFile源码:
def hadoopFile[K, V](
path: String,
inputFormatClass: Class[_ : InputFormat[K, V]],
keyClass: Class[K],
valueClass: Class[V],
minPartitions: Int = defaultMinPartitions
): RDD[(K, V)] = {
assertNotStopped()
// A Hadoop configuration can be about 10 KB, which is pretty big, so broadcast it.
val confBroadcast = broadcast(new SerializableWritable(hadoopConfiguration))
val setInputPathsFunc = (jobConf: JobConf) = FileInputFormat.setInputPaths(jobConf, path)
new HadoopRDD(
this,
confBroadcast,
Some(setInputPathsFunc),
inputFormatClass,
keyClass,
valueClass,
minPartitions).setName(path)
}
可以看到该函数最后的返回结果是一个RDD。主要做的事情包括:
1:将Hadoop的配置文件放在一个广播变量里
2:路径设置的方法
3:new一个Hadoop RDD,所以最后返回的RDD的类型是Hadoop RDD
HadoopRDD是什么?
下面重点看HadoopRDD。核心代码getPartitions、compute、getPreferredLocations
getPartitions源码:
override def getPartitions: Array[Partition] = {
val jobConf = getJobConf()
// add the credentials here as this can be called before SparkContext initialized
SparkHadoopUtil.get.addCredentials(jobConf)
val inputFormat = getInputFormat(jobConf)
if (inputFormat.isIn
您可能关注的文档
- (SIPARTPS2操作手册阀位调节器.doc
- (SIPOS5FLASH电动执行器检修作业指导书08.8.doc
- (SketchUp教程如何将3D模型导入GoogleEarth.doc
- (SketchUp与ArcGIS的校园设计.doc
- (SLQX36数字取心仪.doc
- (SMDIC的高速高精度图像识别算法及其实现.doc
- (SMEZ5102950674.doc
- (SketchUp教程如何将3D模型导入GoogleEarth2.doc
- (SMI完整版.doc
- (snaker文档.doc
- 中国行业标准 DB/T 100-2024区域性地震安全性评价.pdf
- 《GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架》.pdf
- GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架.pdf
- DB/T 100-2024区域性地震安全性评价.pdf
- 中国行业标准 GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架.pdf
- 校园周边书店阅读氛围对初中生阅读素养提升的影响研究教学研究课题报告.docx
- 初中校园餐饮卫生监管与食品安全教育创新模式研究教学研究课题报告.docx
- 《文化遗产保护与旅游开发平衡机制的法律法规完善研究》教学研究课题报告.docx
- 《农作物病虫害生物防治技术的经济效益与社会影响分析》教学研究课题报告.docx
- 1 剖宫产术后子宫瘢痕憩室治疗中的并发症预防与护理措施教学研究课题报告.docx
文档评论(0)