大数据学习之Spark(一)

 

目录

一、Spark基本介绍(可跳过)

1、Spark历史介绍

2、Spark简要说明

3、Spark核心概念

二、Linux安装使用Spark

1、下载

2、上传并解压

3、运行Spark示例程序

(1)先切换到spark根目录

(2)输入命令执行程序

4、实现WordCount功能

(1)启动spark命令行模式

(2)一行代码实现WordCount

三、IDEA开发WordCount程序 

1、创建maven项目

2、实现WordCount程序

(1)创建包com.spark.demo

(2)创建WordCount文件

(3)创建目录in及文件word.txt

(4)书写WordCount代码


一、Spark基本介绍(可跳过)

1、Spark历史介绍

https://www.bilibili.com/video/BV1BJ411U7hW?p=707

2、Spark简要说明

https://www.bilibili.com/video/BV1BJ411U7hW?p=708

3、Spark核心概念

https://www.bilibili.com/video/BV1BJ411U7hW?p=709

二、Linux安装使用Spark

B站视频教程(可跳过)

https://www.bilibili.com/video/BV1BJ411U7hW?p=710

1、下载

最新版本:http://spark.apache.org/downloads.html

历史版本:https://archive.apache.org/dist/spark/

为与视频教程保持一致,下载基于hadoop2.7的2.1.1版本

2、上传并解压

xftp上传至目录/opt/software目录下

解压至/opt/module目录下

tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/

 

切换至解压目录将文件夹重命名为spark

cd /opt/module
mv spark-2.1.1-bin-hadoop2.7 spark

3、运行Spark示例程序

(1)先切换到spark根目录

cd /opt/module/spark

(2)输入命令执行程序

(计算100次取平均求解PI值)

bin/spark-submit \--class org.apache.spark.examples.SparkPi \--executor-memory 1G \--total-executor-cores 2 ./examples/jars/spark-examples_2.11-2.1.1.jar \100

程序开始执行

 计算结果(不怎么准)

4、实现WordCount功能

(1)启动spark命令行模式

注意:若不在spark根目录则需要先切换目录:cd /opt/module/spark 

bin/spark-shell

(2)一行代码实现WordCount

统计README.md文件同一内容出现次数

sc.textFile("README.md").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).collect()

三、IDEA开发WordCount程序 

1、创建maven项目

pom文件添加spark依赖

    <!--添加spark依赖-->
    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.1.1</version>
        </dependency>
    </dependencies>


    <build>
        <finalName>WordCount</finalName>
        <plugins>
            <!--添加Scala编译插件-->
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2、实现WordCount程序

(1)创建包com.spark.demo

(2)创建WordCount文件

注意:类型选择Object 

(3)创建目录in及文件word.txt

 

Hello Scala
Hello Spark
Hello World
Hello Hadoop
Hello Scala

(4)书写WordCount代码

package com.spark.demo

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

object WordCount {
  /**
    * 实现WordCount功能
    *
    * @param args
    */
  def main(args: Array[String]): Unit = {

    // 创建SparkConf对象并设置参数
    val config = new SparkConf().setMaster("local[*]").setAppName("WordCount")

    // 创建Spark上下文对象
    val sc = new SparkContext(config)

    // 读取指定目录下的文件(逐行读取内容)
    val lines: RDD[String] = sc.textFile("in")

    // 将一行行内容分解为一个个的单词
    // 完整写法:
//    val words: RDD[String] = lines.flatMap((item)=>{item.split(" ")})
    val words: RDD[String] = lines.flatMap(_.split(" "))

    // 数据结构转换,将集合元素由字符串转换为元组
    // 完整写法:
//    val wordToOne: RDD[(String, Int)] = words.map((item)=>{(item, 1)})
    val wordToOne: RDD[(String, Int)] = words.map((_, 1))

    // 两两进行聚合
    // 完整写法:
//    val wordToSum: RDD[(String, Int)] = wordToOne.reduceByKey((value1, value2)=>{value1 + value2})
    val wordToSum: RDD[(String, Int)] = wordToOne.reduceByKey(_ + _)

    // 收集计算结果
    val result: Array[(String, Int)] = wordToSum.collect()

    // 打印数组
    // 完整写法
//    result.foreach((item)=>{println(item)})
    result.foreach(println)


    // 用一行代码实现
//    sc.textFile("in").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).collect().foreach(println)
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值