Spark1——运行环境配置

Maven配置安装scala和Spark(Mac 环境)

参考:https://blog.csdn.net/end_taotao/article/details/98450984

  1. 安装scala插件,2.12.11版本

(1)这里将/usr/local/scala-2.12.11下的scala解压包直接导入Project Structure。
在这里插入图片描述

(2)在项目下Add Frameworks Support导入使用scala 2.12版本(在Module下)

在这里插入图片描述

  1. 安装Spark,3.0.1版本,导入jar包

在 project structure -> Libraries -> java 下导入spark解压包下的所有jar包(/usr/local/spark-3.0.0-bin-hadoop3.2/jars/usr/local/spark-3.0.0-bin-hadoop3.2)
在这里插入图片描述

  1. 配置依赖

在项目下的pom.xml文件下加入以下依赖,更新完成即可。

在这里插入图片描述

  1. 源码

下载源码,添加到IDEA。
https://www.cnblogs.com/lz3018/p/5420196.html

WordCount实现

  1. 第一种方式

在这里插入图片描述

package com.yu.bigdata.spark.core.wordCount

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

object Spark01_WordCount {
  def main(args: Array[String]): Unit = {
    //1. 建立和Spark框架的连接
    val sparkConf = new SparkConf().setMaster("local").setAppName("WordCount")    //基础配置
    val sc = new SparkContext(sparkConf)  //创建对象

    //2. 执行业务操作
    //(1)读取文件,获取一行一行的数据 "hello world"
    val lines: RDD[String] = sc.textFile("datas")

    //(2)将一行数据拆分,形成单个的单词 (分词) "hello world" => hello world hello world
    val words: RDD[String] = lines.flatMap(_.split(" ")) //扁平化

    //(3)将数据根据单词进行分组,便于统计 (hello hello hello) (world world)
    val wordGroup: RDD[(String, Iterable[String])] = words.groupBy(word => word)

    //(4)对分组后的数据进行转换  (hello 3)(world 2)
    val wordToCount = wordGroup.map {
      case (word, list) =>
        (word, list.size)
    }

    //(5)将转换结果采集到控制台打印
    val array: Array[(String, Int)] = wordToCount.collect()
    array.foreach(println)

    //3. 关闭连接
    sc.stop()
  }
}
  1. 第二种方式

在这里插入图片描述

package com.yu.bigdata.spark.core.wordCount

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

object Spark02_WordCount {
  def main(args: Array[String]): Unit = {
    //1. 建立和Spark框架的连接
    val sparkConf = new SparkConf().setMaster("local").setAppName("WordCount")    //基础配置
    val sc = new SparkContext(sparkConf)  //创建对象

    //2. 执行业务操作
    //(1)读取文件,获取一行一行的数据 "hello world"
    val lines: RDD[String] = sc.textFile("datas")

    //(2)将一行数据拆分,形成单个的单词 (分词) "hello world" => hello world hello world
    val words: RDD[String] = lines.flatMap(_.split(" ")) //扁平化

    //(3)将每个单词形成元组,第二个元素置为1
    val wordToOne: RDD[(String, Int)] = words.map(
      word => (word, 1)
    )

    //(4)根据元组的第一个单词分组 ((hello,1) (hello, 1) ) ( (world, 1) (world, 1) )
    val wordGroup: RDD[(String, Iterable[(String, Int)])] = wordToOne.groupBy {
      t => t._1
    }

    //(5)使用reduce函数将组内的个数相加,统计出wordCount
    val wordToCount: RDD[(String, Int)] = wordGroup.map {
      case (word, list) =>
        list.reduce {
          (t1, t2) => {
            (t1._1, t1._2 + t2._2)
          }
        }
    }

    //(6)将转换结果采集到控制台打印
    val array: Array[(String, Int)] = wordToCount.collect()
    array.foreach(println)
    //(Hello,4)
    //(World,2)
    //(Spark,2)

    //3. 关闭连接
    sc.stop()
  }
}
  1. 第三种方式

Spark框架提供了更多的功能,可以将分组和聚合使用一个方法实现,reduceByKey函数,直接统计相同的key的总个数。

直接将上面的(4)(5)步替换为:

    val wordToCount: RDD[(String, Int)] = wordToOne.reduceByKey(_ + _)

Spark运行环境

Spark 作为一个数据处理框架和计算引擎,被设计在所有常见的集群环境中运行, 在国内工作中主流的环境为 Yarn,不过逐渐容器式环境也慢慢流行起来。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值