您现在的位置是:首页 > 博文答疑 > 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
选择Install JetBrains plugins,并搜索scala如下图,找到Scala后直接点击install进行安装
以上就是准备工作了,很简单。
接下来就是项目的创建和第一个Spark程序:
1,创建一个SBT项目,如果愿意用maven的也是可以的。
路径:File->New->Project后选择刚刚安装的scala下的SBT
接下来就是指定名字和选择scala,java的版本。
在新建project下:main->scala 右键 创建scala类
给新建文件取名字,修改类型为Object
好了,接下来修改下配置文件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,如下图
保存后直接跑程序就可以了,右键->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
输出结果太长,只截了最后一部分. 这样是不是很简单?