• 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

    友情链接

     
  • 相关阅读:
    hdu1238 Substrings
    CCF试题:高速公路(Targin)
    hdu 1269 迷宫城堡(Targin算法)
    hdu 1253 胜利大逃亡
    NYOJ 55 懒省事的小明
    HDU 1024 Max Sum Plus Plus
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1257 最少拦截系统
    HDU 1069 Monkey and Banana
    HDU 1104 Remainder
  • 原文地址:https://www.cnblogs.com/huhx/p/firstpythonsparkdemo.html
Copyright © 2020-2023  润新知