用Idea搭建我們的Spark環境
用IDEA搭建我們的環境有很多好處,其中最大的好處,就是我們甚至可以在工程當中直接運行、調試我們的代碼,在控制台輸出我們的結果。或者可以逐行跟蹤代碼,了解spark運行的機制。因此我們選擇了idea,當然Idea不是首選,當然也可以用其他工具。因為我們的Spark程序用scala和java寫,需要有java環境來作為支撐。因此任何能夠支撐java程序的開發工具,應該都能夠搭建我們的Spark程序。我這里是MAC環境下,當然如果你是windows不用擔心,這里只涉及到idea的操作,不涉及操作系統環境的更改,所以你無須擔心,因為Idea在Mac下和windows下並無多大差別
第一步,下載插件,如果你只想用Java而不想用Scala,則可以跳過這一步
在preference中找到plugins,搜索scala,然后下載該插件

第二步,創建maven項目



第三步,導入scala的SDK,如果你只想用Java而不想用Scala,則可以跳過這一步
打開project structure

導入SDK



此時可以創建Scala的class文件了

第四步,在pom中導入插件和依賴
插件主要是幫助打包scala包,方便再spark平台上發布我們的程序。當然僅僅最開始我們盡可能將項目運行在idea中,而不需要發布。依賴是spark運行所必須的jar,其中spark的核心spark-core主要是用scala編寫的,當然你也能夠用java去使用。
在pom文件中導入
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>sparkdemo</groupId> <artifactId>sparkdemo</artifactId> <version>1.0-SNAPSHOT</version> <build> <finalName>HiveTest</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.15.2</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.8.4</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.11</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.11</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-mllib_2.11</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.20</version> </dependency> </dependencies> </project>
第五步,運行我們的第一個程序
當我們學習任何一項技術的時候,我們都有一個愛好,喜歡先輸出Hello,World!在Spark中亦是如此,我們第一個項目也是Hello,World!當然很多人說,spark的Hello,World!應該是字數統計(即統計一本書的或者一個文件的單詞數)。當然這也沒錯,畢竟spark的最核心的功能是大數據和機器學習,但是對一個初學者來說,我認為,不妨再簡單些。
創建Scala文件


接下來可以開始寫我們的第一個第一個程序。
首先創建一個SparkConf(),即spark的基礎配置,主要設置了master為“local”即運行在本機而非集群,第二個是AppName。而后創建SparkContext,這里取名為sc和我們在spark-shell中默認的一致。最后為sc設置內容,即一個list,其中包含三句話。依次輸出三句話
scala實現
package spark import org.apache.spark.{SparkConf, SparkContext} object HelloWorld { def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("HelloWorld") val sc = new SparkContext(conf) val helloWorld = sc.parallelize(List("Hello,World!","Hello,Spark!","Hello,BigData!")) helloWorld.foreach(line => println(line)) } }
運行得到:

Hello,World!
Hello,Spark!
Hello,BigData!
java實現
import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import java.util.Arrays; public class HelloWorldJava { public static void main(String[] args){ SparkConf conf = new SparkConf().setMaster("local").setAppName("HelloWorldJava"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> helloWorld = sc.parallelize(Arrays.asList("Hello,World","Hello,Spark","Hello,BigData")); System.out.println(helloWorld.collect()); } }
運行得到:

[Hello,World, Hello,Spark, Hello,BigData]
python實現
from pyspark import SparkConf,SparkContext conf = SparkConf().setMaster("local").setAppName("HelloWorld") sc = SparkContext(conf=conf) helloWorld = sc.parallelize(["Hello,World","Hello,Spark","Hello,BigData"]).collect() print(helloWorld)
運行得到:

['Hello,World', 'Hello,Spark', 'Hello,BigData']
至此我們就在scala、java、python中運行了我們的第一個spark程序。當然,我們可以選擇自己最上手的語言去寫spark程序,spark本身也非常良好地支持了這三種語言。因此不要讓語言成為障礙,反而因此獲得更多的選擇。無論是java、scala還是python都能寫出良好運行的spark程序