使用IDEA打包scala程序並在spark中運行


一、首先配置ssh無秘鑰登陸,

  先使用這條命令:ssh-keygen,然后敲三下回車;

  然后使用cd .ssh進入 .ssh這個隱藏文件夾;

  再創建一個文件夾authorized_keys,使用命令touch authorized_keys;

  然后使用cat id_rsa.pub > authorized_keys 即可;

  最后使用 chmod 600 authorized_keys修改權限就完成了。

二、創建spark項目

  idea創建spark項目的過程這里就略過了,具體可以看這里https://www.cnblogs.com/xxbbtt/p/8143441.html

三、在pom.xml加入相關的依賴包

  在pom.xml文件中添加:

    <properties>
        <spark.version>2.1.0</spark.version>
        <scala.version>2.11</scala.version>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>

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

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

        </plugins>
    </build>

  然后等待就好了。。。

 

四、編寫一個示范程序

   創建一個scala類,並寫以下代碼,也可以是其他的,這里只是測試而已

object first {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("wordcount")
    val sc = new SparkContext(conf)

    val input = sc.textFile("/home/cjj/testfile/helloSpark.txt")

    val lines = input.flatMap(line => line.split(" "))
    val count = lines.map(word => (word, 1)).reduceByKey { case (x, y) => x + y }

    val output = count.saveAsTextFile("/home/cjj/testfile/helloSparkRes")
  }
}

  這里使用了Spark實現的功能是,計算helloSpark.txt這個文件各個單詞出現的次數,並保存在helloSparkRes文件夾中。

 

五、打包

  file->Porject Structure->Artifacts->綠色的加號->JAR->from modules...

  跳出以下對話框,選擇要打包的類,然后選擇copy to.....選項,這里的意思是只打包這一個類。

  然后點擊ok,然后ok。然后build->build Artifacts

  再然后點擊build

  等待build完成。然后可以在項目的這個目錄中找到剛剛打包的這個jar包

  這里的first的我的項目名。

 

六、啟動集群  

  先將剛才打包的jar包復制到虛擬機中,

  helloSpark.txt是我將要操作的文件。接着就是啟動集群,分為三步

  • 啟動master ./sbin/start-master.sh
  • 啟動worker ./bin/spark-class
  • 提交作業 ./bin/spark-submit

  首先進入spark-2.2.1-bin-hadoop2.7文件夾,然后運行命令./sbin/start-master.sh

  然后可以打開瀏覽器,進入localhost:8080,可以看到

   這里的URL spark://localhost:7077需要記下來下一步需要使用,下一步啟動work,加上剛剛的URL,可以使用的命令是,

./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost:7077

  這時啟動另一個窗口進行提交作業,同樣需要先進入spark文件夾,然后運行命令

./bin/spark-submit  --master spark://localhost:7077 --class first /home/cjj/testfile/first.jar 

 

這樣就算完成了,我們可以來看看結果,看結果之前需要先看一看helloSpark.txt的內容

結果保存在helloSparkRes中,下面是結果

 這里的結果告訴我們have和word的個數為2,word和a的個數為1。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM