以数据流动的视角解释一下wordcount运行的原理
package com.imf.spark.wordcount
import org.apache.spark.{SparkContext, SparkConf}
/**
* Created by vivi on 2016/1/27.
*/
object WordCount {
def main(args: Array[String]) {
/**
* 1.创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,
* 例如:通过setMaster来设置程序要链接的Spark集群的Master的URL,如果设置为local,
* 则代表Spark程序在本地运行,特别适合于机器配置条件非常差的情况。
*/
//创建SparkConf对象
val conf = new SparkConf()
//设置应用程序名称,在程序运行的监控界面可以看到名称
conf.setAppName("My First Spark App!")
//设置local使程序在本地运行,不需要安装Spark集群
conf.setMaster("local")
/**
* 2.创建SparkContext对象
* SparkContext是spark程序所有功能的唯一入口,无论是采用Scala,java,python,R等都必须有一个SprakContext
* SparkContext核心作用:初始化spark应用程序运行所需要的核心组件,包括DAGScheduler,TaskScheduler,SchedulerBackend
* 同时还会负责Spark程序往Master注册程序等;
* SparkContext是整个应用程序中最为至关重要的一个对象;
*/
//通过创建SparkContext对象,通过传入SparkConf实例定制Spark运行的具体参数和配置信息
val sc = new SparkContext(conf)
/**
* 3.根据具体数据的来源(HDFS,HBase,Local,FS,DB,S3等)通过SparkContext来创建RDD;
* RDD的创建基本有三种方式:根据外部的数据来源(例如HDFS)、根据Scala集合、由其他的RDD操作;
* 数据会被RDD划分成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴;
*/
//读取本地文件,并设置一个partition
// val lines = sc.textFile("D://testspark//README.md",1)
val lines = sc.textFile("D://testspark//WordCount.txt",1)
/**
* 4.对初始的RDD进行Transformation级别的处理,例如map,filter等高阶函数的变成,来进行具体的数据计算
* 4.1.将每一行的字符串拆分成单个单词
*/
//对每一行的字符串进行拆分并把所有行的拆分结果通过flat合并成一个大的集合
val words = lines.flatMap { line => line.split(" ") }
/**
* 4.2.在单词拆分的基础上对每个单词实例计数为1,也就是word => (word,1)
*/
val pairs = words.map{word =>(word,1)}
/**
* 4.3.在每个单词实例计数为1基础上统计每个单词在文件中出现的总次数
*/
//对相同的key进行value的累积(包括Local和Reducer级别同时Reduce)
val wordCounts = pairs.reduceByKey(_+_)
//打印输出
wordCounts.foreach(pair => println(pair._1+":"+pair._2))
sc.stop()
}
}
- 大小: 130.6 KB
分享到:
相关推荐
此配置对于集群模式运行 Spark 应用至关重要。 ##### 3. 准备输入文件 在 HDFS 上创建输入文件目录,并将文本文件上传至 HDFS: ```bash hdfs dfs -mkdir /a hdfs dfs -put '/home/hadoop/one.txt' /a ``` 其中 ...
1. 配置Spark集群:如果在集群环境中运行,需要配置Hadoop和Spark的环境。 2. 修改Master设置:将`setMaster("local")`更改为你的集群地址,如`setMaster("spark://master_node:7077")`。 3. 使用Spark Submit提交:...
这种模式下的运行原理与 Local 模式相似。 ##### Spark standalone 模式 在 Spark Standalone 模式下,Master 负责接收任务并将任务分发给 Worker 节点。具体操作如下: - 下载 wordcount 示例代码。 - 使用 Maven ...
一、实验目的 1. 理解Spark编程思想; 2. 学会在Spark Shell中编写Scala程序; 3. 学会在Spark Shell中运行Scala程序。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 ...(二)spark运行wordcount程序
提交模式则是将 Spark 程序提交到集群中运行。 Spark WordCount 代码实现 Spark 的 WordCount 代码实现是一个简单的示例程序,用于统计文本文件中的单词数量。Spark 的 WordCount 代码实现可以使用 Scala 或 ...
模拟了1个WordCount.zip"表明这是一个使用Spring Boot框架构建的Spark应用程序,它结合了Java和Scala两种编程语言,旨在提供一个快速启动和运行的开发环境。其中,WordCount是经典的分布式计算案例,用于统计文本中...
而WordCount则是Hadoop入门的经典示例,通过它,我们可以深入理解Hadoop的工作原理。本文将详细解析这个简单的WordCount程序,帮助初学者快速入门Hadoop。 一、Hadoop简介 Hadoop是Apache基金会的一个开源项目,...
【大数据入门笔记系列】第五节 SpringBoot集成hadoop开发环境(复杂版的WordCount)前言环境清单创建SpringBoot项目创建包创建yml添加集群主机名映射hadoop配置文件环境变量HADOOP_HOME编写代码添加hadoop依赖jar包...
Spark集群中的每个节点都包含一个Worker,负责与Driver通信,报告自己的状态,并执行由Driver分配的任务。在Spark中,每个节点上的内存是通过Block Manager进行管理的,它负责存储blocks,提供block的读写服务。...
在Java编程领域,"javawordcount"通常指的是一个经典的Hadoop MapReduce示例,用于统计文本文件中单词出现的次数。Hadoop是大数据处理的一个关键框架,它使用分布式计算来处理海量数据。MapReduce是一种编程模型,由...
学生将学习环境搭建前的准备工作,包括修改profile文件和Spark配置文件,以及如何启动和关闭Spark集群。此外,还会介绍如何提交应用程序到集群,并利用Sparkweb监控页面进行监控。 **第三章 使用Python开发Spark...
在运行过程中,理解Spark如何利用DAG(有向无环图)来优化任务执行,以及如何在内存中进行数据交换以提高性能。此外,通过观察Stage划分,可以了解Spark如何将大任务分解为小任务并在集群中并行执行。 6. **注意...
3. Driver提交任务给Spark集群:Driver将应用程序提交给Spark集群,Master节点对应用程序进行预估,分配任务给每个Worker节点。 4. Worker节点执行任务:Worker节点领到任务,开始执行,在Worker节点上启动相应的...
在Hadoop、Spark或者其他的分布式计算框架中,WordCount是一个经典的入门例子,它展示了如何处理大规模数据集。 首先,让我们了解一下WordCount的基本工作原理。假设我们有一个大型文本文件,比如《红楼梦》或...
- 使用`spark-submit`命令提交Spark应用程序到集群。 - 理解Spark的执行计划生成和任务调度机制。 - **监控与调试** - 利用Spark Web UI监控作业执行状态。 - 分析性能瓶颈,调整配置参数以优化程序性能。 **...
总之,“Hadoop集群搭建详细简明教程”将引导你完成从零到一的Hadoop集群建设,通过实践操作,你可以深入理解Hadoop的工作原理,为处理大数据问题打下坚实的基础。记得不断学习和探索,因为Hadoop生态系统在不断发展...
在WordCount例子中,原始文本文件会被HDFS分割成多个块,并分别存储在集群的不同DataNode上,确保高可用性和容错性。 2. **MapReduce框架**:MapReduce是Hadoop的并行计算模型,它将大型任务分解为较小的子任务,...
9. **运行示例程序**:尝试运行Hadoop自带的WordCount示例,以确认集群可以正确执行MapReduce任务。 这个过程可能会遇到网络、权限、配置错误等问题,需要根据日志信息进行排查和解决。同时,为了保证集群的稳定性...
- 使用Spark实现WordCount程序的开发与运行。 1. **数据准备**: - 输入数据:`input.txt` 2. **代码实现**: ```scala import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org...