一,下载Spark

使用 Spark 的第一步是下载和解压缩。我们先从下载预编译版本的 Spark 开始。访问 http://spark.apache.org/downloads.html ,进行spark安装包的下载。本文使用版本为:spark-2.4.3-bin-hadoop2.7.tgz

二,安装Spark

cd ~
tar -xf spark-2.4.3-bin-hadoop2.7.tgz
cd spark-2.4.3-bin-hadoop2.7
ls

在 tar 命令所在的那一行中,x 标记指定 tar 命令执行解压缩操作,f 标记则指定压缩包的文件名。ls 命令列出了 Spark 目录中的内容。我们先来粗略地看一看 Spark 目录中的一些比较重要的文件及目录的名字和作用。
• README.md
包含用来入门 Spark 的简单的使用说明。
• bin
包含可以用来和 Spark 进行各种方式的交互的一系列可执行文件,比如本章稍后会讲到的 Spark shell。
• core、streaming、python……
• 包含Spark项目主要组件的源代码。
• examples
包含一些可以查看和运行的 Spark 程序,对学习 Spark 的 API 非常有帮助。

三,SparkShell介绍

Spark 带有交互式的 shell,可以作即时数据分析。如果你使用过类似 R、Python、Scala 所提供的 shell,或操作系统的 shell(例如 Bash 或者 Windows 中的命令提示符),你也会对Spark shell 感到很熟悉。然而和其他 shell 工具不一样的是,在其他 shell 工具中你只能使用单机的硬盘和内存来操作数据,而 Spark shell 可用来与分布式存储在许多机器的内存或者硬盘上的数据进行交互,并且处理过程的分发由 Spark 自动控制完成。

bin/spark-shell

Apache Spark渐进式学习教程(三): Spark单节点安装和快速入门Demo-LMLPHP

当启动一个Spark shell时,Spark shell已经预先创建好一个SparkContext对象,其变量名为“sc”。如果你再新建一个SparkContext对象,那么它将不会运行下去。我们可以使用–master标记来指定以何种方式连接集群,也可以使用–jars标记添加JAR包到classpath中,多个JAR包之间以逗号分隔;还可以使用–packages标记添加Maven依赖到shell会话中,多个依赖间用逗号隔开。另外通过–repositories标记添加外部的repository。下面语句在本地模式下,使用四核运行spark-shell:

./bin/spark-shell --master local[4]

四,快速入门Demo

本教程将进行wordCount的demo快速入门,首先需要创建maven工程并引入scala语言的支持。

scala版本的wordcount

package com.t9vg

import org.apache.spark.{SparkConf, SparkContext}

object WordCount {

  def main(args:Array[String]):Unit={
    val conf = new SparkConf().setMaster("local").setAppName("WordCount")
    val sc = new SparkContext(conf)
    val text = sc.textFile("quickStart/src/main/resources/1.txt")
    val words = text.flatMap(line =>line.split(","))//?
    val pairs = words.map(word =>(word,1))//?
    val result = pairs.reduceByKey(_+_)
    val sorted = result.sortByKey(false);
    sorted.foreach(x => println(x));
  }
}

Java版本的wordCount

package com.t9vg.rdd;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;

import java.util.Arrays;

public class WordCount {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setMaster("local").setAppName("WorldCount");
        JavaSparkContext sc = new JavaSparkContext(conf);
        JavaRDD<String> textFile = sc.textFile("quickStart/src/main/resources/1.txt");
        JavaPairRDD<String, Integer> counts = textFile
                .flatMap(s -> Arrays.asList(s.split(",")).iterator())
                .mapToPair(word -> new Tuple2<>(word, 1))
                .reduceByKey((a, b) -> a + b);
        counts.foreach(x-> System.out.println(x.toString()));
        sc.close();
    }
}

项目源码地址:

https://github.com/JDZW2018/learningSpark.git

07-30 02:21