spark的wordcount之scala写法

读取内存的数据

package com.wordcount

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


/**
  * 使用scala实现wordCount,读取内存中的List集合中的数据进行统计
  */
object _01wordCount {
  def main(args: Array[String]): Unit = {
    //创建配置对象
    val conf: SparkConf = new SparkConf()
      .setAppName(s"${_01wordCount.getClass.getSimpleName}")
      .setMaster("local")
    val sc = new SparkContext(conf)
    //集合数据
    val list = List(
      "org.apache.spark.SparkConf",
      "org.apache.spark.api.java.function.VoidFunction",
      "scala.Tuple2"
    )
    //生成RDD
    val listRDD: RDD[String] = sc.parallelize(list)
    //进行transformation操作和action操作
    val retRDD: RDD[(String, Int)] = listRDD.flatMap(_.split("\\.")).map((_,1)).reduceByKey(_+_)
    //将最终的数据进行输出
    retRDD.foreach(x=>println(x._1+"------->"+x._2))
    //关闭资源
    sc.stop()
  }
}

读取本地文件

package com.wordcount

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


/**
  * 使用scala实现wordCount,读取本地磁盘的数据
  */
object _02wordCountLoal {
  def main(args: Array[String]): Unit = {
    //创建配置对象
    val conf: SparkConf = new SparkConf()
      .setAppName(s"${_01wordCount.getClass.getSimpleName}")
      .setMaster("local")
    val sc = new SparkContext(conf)

    //生成RDD
    val textRDD: RDD[String] = sc.textFile("D://aaa//word.txt")
    //进行transformation操作和action操作
    val retRDD: RDD[(String, Int)] = textRDD.flatMap(_.split("\\.")).map((_,1)).reduceByKey(_+_)
    //将最终的数据进行输出
    retRDD.foreach(x=>println(x._1+"------->"+x._2))
    //关闭资源
    sc.stop()
  }
}

读取hdfs文件

package com.wordcount

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


/**
  * 使用scala实现wordCount,读取HDFS的数据
  * 注意这里在运行的时候用到了高可用的额组名,这样的话就需要将core-site.xml和hdfs-site.xml放在classPath的目录下
  * 放在resources的目录下运行就可以了
  *
  */
object _03wordCountHDFS {
  def main(args: Array[String]): Unit = {
    //创建配置对象
    val conf: SparkConf = new SparkConf()
      .setAppName(s"${_01wordCount.getClass.getSimpleName}")
      .setMaster("local")
    val sc = new SparkContext(conf)

    //生成RDD
    val textRDD: RDD[String] = sc.textFile("hdfs://bd1901/word/word.txt")
    //进行transformation操作和action操作
    val retRDD: RDD[(String, Int)] = textRDD.flatMap(_.split("\\.")).map((_,1)).reduceByKey(_+_)
    //将最终的数据进行输出
    retRDD.foreach(x=>println(x._1+"------->"+x._2))
    //关闭资源
    sc.stop()
  }
}

master:spark作业去连接spark集群的方式
local: spark作业不依托于spark集群,在本地完成计算,此时Driver和Executor何为一体。
local :为当前Spark作业分配一个工作线程。
local[M] :为当前Spark作业分配M个工作线程。M不会超过可用的线程 cpu core。
local[*] :为当前spark作业分配当前计算机的可用CPU core的个数

local[M, N] :
local[, N] :
这里的M和
,与上面的M和*的含义是一样的,不同点在于第二个参数N,
在有限的提交次数N以内,如果提交失败,重新进行spark作业的提交。
standalone: 基于Spark自身集群的提交方式:spark://bigdata01:7077
如果是HA的集群,spark://bigdata01:7077,bigdata02:7077
master: spark://bigdata01:7077或者 spark://bigdata01:7077,bigdata02:7077
deploy-mode:
client :driver在本地启动,提交spark作业的那台机器就是driver,sparkcontext就在这台机器创建
cluster :driver不在本地启动,driver会在spark集群中被启动,driver也在worker节点上面
yarn:
deploy-mode:
client :driver在本地启动,提交spark作业的那台机器就是driver,sparkcontext就在这台机器创建
cluster :driver不在本地启动,driver会在yarn集群中被启动,driver也在nodemanager节点上面
mesos:—>欧美只要的资源调度框架
client :
cluster :

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值