Spark入門(二)如何用Idea運行我們的Spark項目

NO IMAGE

用Idea搭建我們的Spark環境

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

第一步,下載插件,如果你只想用Java而不想用Scala,則可以跳過這一步

在preference中找到plugins,搜索scala,然後下載該插件

Spark入門(二)如何用Idea運行我們的Spark項目

第二步,創建maven項目

Spark入門(二)如何用Idea運行我們的Spark項目

Spark入門(二)如何用Idea運行我們的Spark項目

Spark入門(二)如何用Idea運行我們的Spark項目

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

打開project structure

Spark入門(二)如何用Idea運行我們的Spark項目

導入SDK

Spark入門(二)如何用Idea運行我們的Spark項目

Spark入門(二)如何用Idea運行我們的Spark項目

Spark入門(二)如何用Idea運行我們的Spark項目

Spark入門(二)如何用Idea運行我們的Spark項目

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

Spark入門(二)如何用Idea運行我們的Spark項目

第四步,在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文件

Spark入門(二)如何用Idea運行我們的Spark項目

Spark入門(二)如何用Idea運行我們的Spark項目

接下來可以開始寫我們的第一個第一個程序。

首先創建一個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))
}
}

運行得到:

Spark入門(二)如何用Idea運行我們的Spark項目

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());
}
}

運行得到:

Spark入門(二)如何用Idea運行我們的Spark項目

[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)

運行得到:

Spark入門(二)如何用Idea運行我們的Spark項目

['Hello,World', 'Hello,Spark', 'Hello,BigData']

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

相關文章

Spark入門(六)Spark的combineByKey、sortBykey

Spark入門(五)Spark的reduce和reduceByKey

Spark入門(四)Spark的map、flatMap、mapToPair

Spark入門(三)Spark經典的單詞統計