Learning Spark——使用spark-shell运行Word Count

hadoop、zookeeper、hbase、spark集群环境搭建中已经把环境搭建好了,工欲善其事必先利其器,现在器已经有了,接下来就要开搞了,先从spark-shell开始揭开Spark的神器面纱。

spark-shell是Spark的命令行界面,我们可以在上面直接敲一些命令,就像windows的cmd一样,进入Spark安装目录,执行以下命令打开spark-shell:

bin/spark-shell --master spark://hxf:7077 --executor-memory 1024m --driver-memory 1024m --total-executor-cores 4

executor-memory是slave的内存,driver-memory是master的内存,total-executor-cores是所有的核数

终端显示如下图,可以看到spark-shell已经帮我们初始化了两个变量sc、spark,sc是Spark context,spark是Spark session,没吃过猪肉见过猪跑,像这些包含context啊session啊不用想就很重要,同样Spark的执行就是靠这俩变量,目前先混个眼熟,日后再说

Spark管理页面显示如下图:

OK,现在我们开始动手敲第一个例子,统计Spark目录下 README.md 这个文件中各个单词出现的次数:

首先给出完整的代码,方便大家有一个整体的思路:

val textFile = sc.textFile("file:/data/install/spark-2.0.0-bin-hadoop2.7/README.md")
val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts.collect()

代码很简单,但是第一次见到可能不是很理解,下面进行讲解

1. Spark读取原始数据的方式

首先读取 README.md:

val textFile = sc.textFile("README.md")

这条代码是读取原始数据转化为Spark自己的数据格式RDD,一般读取原始数据有两种方式

1、测试用法:调用SparkContext的parallelize方法

val rdd = sc.parallelize(Array(1 to 10))

这样就获取到了1到10的数组,多用于测试程序,正式开发不用这种

2、正式用法:所有Hadoop可以使用的数据源Spark都可以使用,当然我们最常用的还是SparkContext的textFile方法,如读取Hdfs上的文件:

val rdd = sc.parallelize("hadoop://hxf:9000/test/test.log")

2. Spark的基础数据类型RDD

上面通过textFile得到的结果叫做RDD,是Spark的基础数据类型。

RDD是Resillient Distributed Dataset的简称,意思是弹性分布式数据集,这个名字不是太好理解,但是我们可以从字面上了解到RDD是分布式的、并且是数据集合,假设分布式系统下有多个文件,这些文件有很多行,RDD指的是所有这些文件所有行的集合,而不是单独某一行。所以我们对RDD进行的一系列操作都是对整个集合进行的操作,并且Spark是将整个RDD放在内存中进行处理,而不是像MapReduce那样放在磁盘中,所以Spark的运算速度才会比MapReduce快。

接下来继续讲解代码:

val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts.collect()

最后的结果显示各个单词出现的次数,代码中的flatMap、map、reduceByKey是RDD的转化操作,collect是RDD的行动操作,不理解没关系,后文详解。这一节先暂时讲到这里,欲听后事如何,请听下回分解。

时间: 2024-10-15 14:04:21

Learning Spark——使用spark-shell运行Word Count的相关文章

Spark Shell 实现 Word Count

0. 说明 在 Spark Shell 实现 Word Count RDD (Resilient Distributed dataset), 弹性分布式数据集. 1. 实现 1.1 分步实现 # step 1 加载文档 val rdd1 = sc.textFile("file:///home/centos/wc1.txt") # step 2 压扁 val rdd2 = rdd1.flatMap(line=>{line.split(" ")}) # step

mac上eclipse上运行word count

1.打开eclipse之后,建立wordcount项目 package wordcount; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.had

Spark的word count

word count 1 package com.spark.app 2 3 import org.apache.spark.{SparkContext, SparkConf} 4 5 /** 6 * Created by Administrator on 2016/7/24 0024. 7 */ 8 object WordCount { 9 def main(args: Array[String]) { 10 /** 11 * 第1步:创建Spark的配置对象SparkConf,设置Spark

【Spark深入学习-11】Spark基本概念和运行模式

----本节内容------- 1.大数据基础 1.1大数据平台基本框架 1.2学习大数据的基础 1.3学习Spark的Hadoop基础 2.Hadoop生态基本介绍 2.1Hadoop生态组件介绍 2.2Hadoop计算框架介绍 3.Spark概述 3.1 Spark出现的技术背景 3.2 Spark核心概念介绍 4.Spark运行模式 4.1.Spark程序组成 4.2.Spark运行模式 5.参考资料 --------------------- 1.大数据基础 1.1 大数据平台基本框架

将java开发的wordcount程序部署到spark集群上运行

1 package cn.spark.study.core; 2 3 import java.util.Arrays; 4 5 import org.apache.spark.SparkConf; 6 import org.apache.spark.api.java.JavaPairRDD; 7 import org.apache.spark.api.java.JavaRDD; 8 import org.apache.spark.api.java.JavaSparkContext; 9 impo

Spark分析之Standalone运行过程分析

一.集群启动过程--启动Master $SPARK_HOME/sbin/start-master.sh start-master.sh脚本关键内容: spark-daemon.sh start org.apache.spark.deploy.master.Master 1 --ip $SPARK_MASTER_IP --port $SPARK_MASTER_PORT --webui-port $SPARK_MASTER_WEBUI_PORT 日志信息:$SPARK_HOME/logs/ 14/0

(3)spark核心概念以及运行架构

spark核心概念 我们之前介绍了spark的核心RDD,它是spark操作的基本单元.但是对于spark集群来说你还需要它的其它概念,比如我们操作RDD的时候,资源由谁来管理.任务由谁来执行等等. application:就是我们基于spark开发的应用程序,比如我们写的py文件,一个py文件就可以看成是一个基于spark的应用程序,它是由一个driver进程和多个executor组成.driver和executor是什么先不用管,总之记住一个基于spark的应用程序=1个driver+多个e

【Spark Core】任务运行机制和Task源代码浅析1

引言 上一小节<TaskScheduler源代码与任务提交原理浅析2>介绍了Driver側将Stage进行划分.依据Executor闲置情况分发任务,终于通过DriverActor向executorActor发送任务消息. 我们要了解Executor的运行机制首先要了解Executor在Driver側的注冊过程.这篇文章先了解一下Application和Executor的注冊过程. 1. Task类及其相关 1.1 Task类 Spark将由Executor运行的Task分为ShuffleMa

Spark学习笔记-如何运行wordcount(使用jar包)

IDE:eclipse Spark:spark-1.1.0-bin-hadoop2.4 scala:2.10.4 创建scala工程,编写wordcount程序如下 package com.luogankun.spark.base import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ /** * 统计字符出现次数 */ object