第9课:IDEA下的spark程序开发

本篇博客详细介绍了如何在IntelliJ IDEA中开发Spark程序,包括从下载IDEA到新建Scala项目,再到配置Spark环境,最后实现WordCount程序的本地及集群运行。文章还提到了IDE中直接发布到集群的限制以及打包和远程调试的注意事项。
摘要由CSDN通过智能技术生成

第9课:IDEA下的spark程序开发

 

1.下载IntelliJ IDEA:

http://www.jetbrains.com/idea/


选择社区版,要在centos上安装,需要下载.TARGZ,解压。

进入IDEA目录下的bin目录下,./idea.sh启动(需要提前安装好java,并设定好JAVA_HOME)

windows下需要下载.exe文件后双击安装。

安装时会出现下图所示界面时点击Install scala。安装完成后如下图:


安装完IDEA后启动IDEA,新建scala project

点击File->new Project->scala->scala->next,如下图:


4. 指定JDK1.8.x和scala2.10.4。填写Project name为WordCount,选择Project SDK为java1.8.0_45,

选择scala SDK为scala-sdk-2.10.4后点击finish。


5.File-> Project Structure来设置工程的libraries,核心是添加spark的jar。

选择Libraries后点击+号后选择java。选择java是从jvm的角度考虑的。

 

 

6.添加spark的jar依赖,选择解压后的spark-1.6.0-bin-hadoop2.6.0目录中的lib/spark-assembly-1.6.0-hadoop2.6.0.jar

 

导入完成后选择Modules为WordCount后点击OK


可以看到java和scala、spark的依赖都被加入到WordCount项目中了。


7. 在WordCount项目中的src上点击右键,选择new->package,包名为com.dt.spark。在包名上点击右键,选择new->scala class,选择Kind为object,填写Name为WordCount。

8. 编写代码如下:

package com.dt.spark

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext


/**
 * 使用scala开发本地测试的spark WordCount程序
 * DT大数据梦工厂
 * 新浪微博:p://weibo.com/ilovepains/
 */
object WordCount {
  def main(args: Array[String]){
    /*
     * 第一步:创建spark的配置对象SparkConf,设置Spark程序运行时的配置信息
     * 例如通过setMaster来设置程序要链接的Spark集群的Master的URL,如果设置
     * 为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差(例如
     * 只有1内存)的初学者
     */
    val conf = new SparkConf()      //创建SparkConf对象。因为是全局唯一的,所以使用new,不用工厂方法模式。
    conf.setAppName("Wow, My First Spark App!")    //设置应用程序的名称,在程序运行的监控界面可以看到名称
    conf.setMaster("local")  //此时程序在本地运行,不需要安装spark集群。
    /**
     * 第二步:创建SparkContext对象,
     * SparkContext是Spark程序所有功能的唯一入口,无论是采用scala/java/Python/R等都必须有一个SParkContext,而且默认都只有一个。
     * SparkContext核心作用:初始化应用程序运行时所需要的核心组件,包括DAGScheduler,TaskScheduler,Scheduler Backend,
     * 同时还会负责Spark程序往Master注册程序等。SparkContext是整个Spark应用程序中最为重要的一个对象,
     * 
     */
     val sc = new SparkContext(conf)    //通过创建SparkContext对象,通过传入SparkConf实例来定制SPark地的具体参数和配置信息。
    /*
     * 第三步:根据具体的数据来源(/HBase/Local FS/DB/S3等)通过SparkContext创建RDD,
     * RDD创建有三种基本方式:1.根据外部数据来源(如HDFS),2.根据Scala集合,3.由其他RDD操作产生
     * 数据会被RDD划分成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴,
     */
    val lines = sc.textFile("D://programFiles//spark-1.6.0-bin-hadoop2.6//README.md", 1)  //假设电脑只有1G内存,一个core。读取本地文件,设置partition
    //也可以写成:l lines:RDD[String] = sc.textFile    类型推断
    /**
     * 第4步:对初始RDD进行Transformation级别的处理。例如map/filter等高阶函数等的编程
     * 来进行具体的数据计算。第4.1步:将每一行的字符串拆分成单个的单词。
     */
     val words = lines.flatMap { line => line.split(" ") }   //对每一行的字符串进行单词拆分,map每次循环一行,将每一行的小集合通过flat合并成一个大集合
    /**
     * 第4.2步,在单词拆分的基础上对每个单词实例 进行计数为1,也就是word => (word,1)
     */
    val pairs = words.map { word => (word,1) }
    /**
     * 第4.3步,在每个单词实例计数为1的基础上,统计每个单词在文件中出现的总次数。
     */
    val wordCounts = pairs.reduceByKey(_+_)  //对相同的Key,进行Value的累计(包括Local和Reduce级别同时 Reduce)
    wordCounts.foreach(wordNumberPair => println(wordNumberPair._1 + " : " + wordNumberPair._2))
    sc.stop()    //把上下文去掉,释放资源
    
  }
}


运行时的console结果:
"C:\Program Files\Jav
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值