您现在的位置是:首页 > 博文答疑 > IntelliJ IDEA下第一个SPARK程序博文答疑

IntelliJ IDEA下第一个SPARK程序

Leo2017-05-15【8】

简介Windows 平台 IntelliJ IDEA下第一个SPARK程序,直接读本地文件

准备工作

1,安装JDK 1.8并配置(配置环境变量)

2,下载和安装IntelliJ IDEA(无需配置环境变量)

3,下载scala插件 点击 file->setting

blob.png

选择Install JetBrains plugins,并搜索scala如下图,找到Scala后直接点击install进行安装

blob.png


以上就是准备工作了,很简单。

接下来就是项目的创建和第一个Spark程序:

1,创建一个SBT项目,如果愿意用maven的也是可以的。

 路径:File->New->Project后选择刚刚安装的scala下的SBT

blob.png

接下来就是指定名字和选择scala,java的版本。

在新建project下:main->scala 右键 创建scala类

blob.png

给新建文件取名字,修改类型为Object

blob.png


好了,接下来修改下配置文件build.sbt文件,让项目可以引入依赖。我引用了很多,这里用不到,但是后面陆续会被用到

name := "SBTTest"

version := "1.0"

scalaVersion := "2.11.10"

val overrideScalaVersion = "2.11.8"
val sparkVersion = "2.0.0"
val sparkXMLVersion = "0.3.3"
val sparkCsvVersion = "1.4.0"
val sparkElasticVersion = "2.3.4"
val sscKafkaVersion = "2.0.1"
val sparkMongoVersion = "1.0.0"
val sparkCassandraVersion = "1.6.0"

ivyScala := ivyScala.value map {
  _.copy(overrideScalaVersion = true)
}

resolvers ++= Seq(
  "All Spark Repository -> bintray-spark-packages" at "https://dl.bintray.com/spark-packages/maven/"
)

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion exclude("jline", "2.12"),
  "org.apache.spark" %% "spark-sql" % sparkVersion excludeAll(ExclusionRule(organization = "jline"), ExclusionRule("name", "2.12")),
  "org.apache.spark" %% "spark-hive" % sparkVersion,
  "org.apache.spark" %% "spark-yarn" % sparkVersion,
  "com.databricks" %% "spark-xml" % sparkXMLVersion,
  "com.databricks" %% "spark-csv" % sparkCsvVersion,
  "org.apache.spark" %% "spark-graphx" % sparkVersion,
  "org.apache.spark" %% "spark-catalyst" % sparkVersion,
  "org.apache.spark" %% "spark-streaming" % sparkVersion
)

配置完后,保存并refresh。几十分钟后refresh结束后可以看到项目下面被下载了很多依赖的包。包多,请保持良好的网络环境。


最后可以写我们第一个SPARK程序里.MyPark.scala

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object MySpark {
  def main(args: Array[String]): Unit ={
    //参数检查
    if(args.length < 1){
      System.err.println("Usage MySpark input")
      System.exit(1)
   }
    //获取参数
    val input=args(0)
    //创建scala版本的SparkContext
    val conf=new SparkConf().setAppName("MySpark").setMaster("local")
    val sc=new SparkContext(conf)
    //获取数据
    val lines=sc.textFile(input)
    //进行相关计算
    lines.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println)
  }
}

为了确保有足够的内存,防止内存溢出,请修改running时的内容空间,我这里设置1024M,由于我们程序中要求有至少一个输入数据,我输入是本地文件"D:/111.txt".设置路径:run->edit configaration,如下图

blob.png

保存后直接跑程序就可以了,右键->run "MySpark" “MySpark”是我这里的程序名字.

(hid6,1)
(time,,1)
(pass,1)
(frightened4.,1)
(woods.,1)
(ran5,1)
(and,4)
(safe,1)
(near,2)

Process finished with exit code 0

输出结果太长,只截了最后一部分. 这样是不是很简单?