Spark入門(二)--如何用Idea執行我們的Spark專案

詩昭發表於2019-02-26

用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程式

相關文章