大数据学习之Spark任务创建及提交到集群服务器运行

一、简写大致思路

1.写一个spark项目,将本地模式注释

2,不需要打印输出,而是用saveAsTextFile(“hdfs路径”)将文件保存到hdfs

3,将工程文件打包,上传到虚拟机spark下 exm --jars中,

4,提交spark任务到集群运行(不需要启动spark也可运行)

 spark-submit --class 类的相对路径名(右击--copy Reference)--master  运行模式(yarn-client  yarn-cluster)  jar包名

5,命令查看

Hadoop dfs -cat 目标文件存储路径名 /*

二、案例代码: 注意包名不要导错!!!Java API删除hdfs文件调用了自定义utils工具类

import org.apache.spark.rdd.RDD

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

import utils.HdfsDelete

object Text2 {

  def main(args: Array[String]): Unit = {

    /**

     * 统计总成绩排名年级前十的各科的成绩

     * */

      //创建spark环境

    val conf = new SparkConf()

    //2,设置任务名

    conf.setAppName("submit_shi")

//    conf.setMaster("local")

    //3,结合环境创建上下文对象

    val sc = new SparkContext(conf)

    //4,读取文件过滤并取出学号和分数

    val newsco: RDD[(String, Int)] = sc

      .textFile("/data/spark/score.txt")

      .map(k => k.split(","))

      .filter(k => k.length == 3)

      .map {

        case Array(nameid: String, _: String, sco: String) =>

          (nameid, sco.toInt)

      }

 //5,根据key分组,罗列出每个学生的没课分数

    val gbkey: RDD[(String, Iterable[Int])] = newsco.groupByKey()

    //6,聚合分数,统计前十

   val qianshi: Array[(String, Int)] = newsco

      .reduceByKey((x: Int, y: Int) => x + y)

      .sortBy(k => -k._2)

      .take(10)

    //7,将前十的集合转成RDD格式,与gbkey表join出前十所对应的各科目分数

    val rddQianshi: RDD[(String, Int)] = sc.parallelize(qianshi)

    val value: RDD[(String, (Int, Option[Iterable[Int]]))] = rddQianshi.leftOuterJoin(gbkey)

//    value.foreach(println)

    //8,判断hdfs路径是否存在,若存在就删除

    HdfsDelete.delete("/data/spark/score_roe")

    //9.将数据结果保存到hdfs自定义路径

    value.saveAsTextFile("/data/spark/score_roe")

  }

}

三、utils工具类代码:API删除hsfs上的文件

package utils

import org.apache.hadoop.conf.Configuration

import org.apache.hadoop.fs.{FileSystem, Path}

object HdfsDelete {

  def delete(path:String): Unit = {

    val configuration = new Configuration()

    val system: FileSystem = FileSystem.get(configuration)

    if (system.exists(new Path(path))){

      system.delete(new Path(path),true)

    }

  }

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值