12.18

选择要添加的模块

Step9、新建一个 Scala class,类型为 Object

Step10、编写 spark 程序
示例代码如下:
 
package com.atguigu.sparkdemo

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

object WordCountDemo {
  val logger = LoggerFactory.getLogger(WordCountDemo.getClass)

  def main(args: Array[String]): Unit = {
    // 创建 SparkConf() 并设置 App 名称
    val sparkConf = new SparkConf().setAppName("WC")
    // 创建 SparkContext,该对象是提交 Spark App 的入口
    val sc = new SparkContext(sparkConf)
    // 使用 sc 创建 RDD 并执行相应的 transformation 和 action
    sc.textFile(args(0)).flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _, 1).sortBy(_._2, false).saveAsTextFile(args(1))
    // 停止 sc,结束该任务
    logger.info("complete!")
    sc.stop()
  }
}

Step11、使用 Maven 打包:首先修改 pom.xml 中的 main class


Step12、点击 idea 右侧的 Maven Project 选项,点击 “闪电”图表,表示跳过测试,然后点击 Lifecycle,再分别双击 clean 和 package

Step13、选择编译成功的 jar 包,并将该 jar 上传到 Spark 集群中的某个节点上

Step14、首先启动 hdfs 和 Spark 集群
启动 hdfs
 
/opt/module/hadoop-2.7.3/sbin/start-dfs.sh

启动 spark

 
/opt/module/spark-2.1.1-bin-hadoop2.7/sbin/start-all.sh

Step15、使用 spark-submit 命令提交 Spark 应用(注意参数的顺序)

 
/opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
--class com.atguigu.sparkdemo.WordCountDemo \
--master spark://hadoop102:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/opt/software/sparkdemo-1.0-SNAPSHOT-jar-with-dependencies.jar \
hdfs://hadoop102:9000/RELEASE \
hdfs://hadoop102:9000/out1

Step16、查看程序执行结果

 
/opt/module/hadoop-2.7.2/bin/hdfs dfs -cat hdfs://hadoop102:9000/out1/p*

如下图所示:


--master 后面跟的参数小结:

传入参数说明:
 
hdfs://hadoop102:9000/RELEASE           输入文件路径
hdfs://hadoop102:9000/out1              输出文件路径

如果在 spark 程序中写死了这两处路径,则这两个参数就不需要了。

3.5 在 IDEA 中本地调试 WordCount 程序

本地 Spark 程序调试需要使用 local 提交模式,即将本机当做运行环境,Master 和 Worker 都为本机。运行时直接加断点调试即可。如下:

如果本机操作系统是 windows,如果在程序中使用了 hadoop 相关的东西,比如写入文件到 HDFS,则会遇到如下异常:


出现这个问题的原因,并不是程序的错误。在 windows 下调试 spark 的时候,用到了 hadoop 相关的服务。

解决办法1:本项目生效,是将一个 hadoop 相关的服务 zip 包(hadoop-common-bin-2.7.3-x64.zip)解压到任意目录。
点击 Run -> Run Configurations
然后在 IDEA 中配置 Run Configuration,添加 HADOOP_HOME 变量即可:

解决办法2:所有项目生效,windows 系统中配置 hadoop 的环境变量,如下图所示:

3.6 在 IDEA 中远程调试 WordCount 程序

通过 IDEA 进行远程调试,主要是将 IDEA 作为 Driver 来提交应用程序,配置过程如下:
修改 sparkConf,添加最终需要运行的 Jar 包、Driver 程序的地址,并设置 Master 的提交地址:

3.7 Spark 核心概念

  每个 Spark 应用都由一个驱动器程序(driver program)来发起集群上的各种并行操作。驱动器程序包含应用的 main 函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作。
  驱动器程序通过一个 SparkContext 对象来访问 Spark。这个对象代表对计算集群的一个连接。shell 启动时已经自动创建了一个 SparkContext 对象,是一个叫作 sc 的变量。
  驱动器程序一般要管理多个执行器(executor)节点。
  

posted @   liuxuechao  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示