spark基礎---->spark的第一個程序


  這里面我們介紹一下spark的安裝,並通過一個python的例子來簡單的體會一下spark的使用。

 

spark的安裝與使用

安裝環境:mac 10.13.6,spark版本:2.3.1,python版本:3.6.5

一、在mac上面安裝spark和pyspark,可以使用brew包管理器安裝。直接運行命令

> brew install apache-spark
> pip install pyspark

 

二、通過start-master啟動我們的集群

> ./start-master.sh

然后我們訪問:http://localhost:8080/,就可以看到集群相關的信息。

三、啟動我們的worker。

> ./start-slave.sh spark://CNhuxhu.local:7077

再次訪問http://localhost:8080/,可以在workers里面看到我們啟動的worker信息。

 

四、編寫我們的第一個spark的python程序

from pyspark import SparkContext, SparkConf

conf = SparkConf().setAppName("FirstApp").setMaster("spark://CNhuxhu.local:7077")
sc = SparkContext(conf=conf)
lines = sc.textFile('/usr/local/Cellar/apache-spark/2.3.1/README.md')

print('counts = ', lines.count())

 

五、提交到spark中處理

spark-submit --master local[4] simpleSpark.py

 可以在控制台看到如下的打印信息:

counts =  103

 

程序中遇到的一些問題

一、運行程序報以下的錯誤

py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.

這是由於我們的mac本地安裝的java版本有jdk8和jdk10,但是默認的是jdk10。spark2.3.1要求的jdk版本是1.8,所以修改系統的jdk版本問題解決。vim ~/.zshrc,添加以下內容

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home

 

二、查看系統安裝jdk的java_home命令

usr/libexec/java_home -V

可以查看系統安裝的所有java以及JAVA_HOME的信息

Matching Java Virtual Machines (2):
    10.0.2, x86_64:    "Java SE 10.0.2"    /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
    1.8.0_162, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home

 

三、以下是一個java版本的spark程序

項目是由maven構建的,在pom.xml添加所需的依賴。

<dependency> <!-- Spark dependency -->
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.3.1</version>
</dependency>

我們編寫的java代碼如下:

package com.linux.huhx;

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.SparkSession;

/**
 * user: huxhu
 * date: 2018/8/11 3:40 PM
 **/
public class SimpleSpark {
    public static void main(String[] args) {
        String logFile = "/usr/local/Cellar/apache-spark/2.3.1/README.md"; // Should be some file on your system
        SparkSession spark = SparkSession.builder().appName("Simple Application").getOrCreate();
        Dataset<String> logData = spark.read().textFile(logFile).cache();

        long numAs = logData.filter(s -> s.contains("a")).count();
        long numBs = logData.filter(s -> s.contains("b")).count();

        System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);

        spark.stop();
    }
}

mvn package打包項目,在target目錄下生成可執行的sparkLearn-1.0-SNAPSHOT.jar文件。最后執行spark-submit命令

spark-submit --class "com.linux.huhx.SimpleSpark" --master local[4] target/sparkLearn-1.0-SNAPSHOT.jar

可以在控制台看到如下的日志打印

Lines with a: 61, lines with b: 30

 

友情鏈接

 

 


免責聲明!

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



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