zoukankan      html  css  js  c++  java
  • spark 独立应用编程之 Java 编程

    文章更新于:2020-04-03
    按照惯例,文件附上链接放在文首。

    文件名:apache-maven-3.6.3-bin.tar.gz
    文件大小:9.1 MB
    下载链接:https://www.lanzous.com/iaykx6d
    SHA256: 26AD91D751B3A9A53087AEFA743F4E16A17741D3915B219CF74112BF87A438C5

    一、安装 maven

    1、下载 maven

    1. 你可以去官网 https://maven.apache.org/download.cgi#Files 下载。
    2. 也可以使用文首提供的蓝奏链(注意校验Hash)。

    2、解压安装

    # 解压到 /usr/local
    sudo tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local | tail -n 10
    
    # 改名和修改权限
    cd /usr/local/
    sudo mv apache-maven-3.6.3/ maven
    sudo chown -R bigdata:bigdata maven
    

    解压安装

    3、运行示例程序

    1. 现在用户家目录创建一个目录树 ~/sparkapp2/src/main/java
    cd ~
    mkdir -p sparkapp2/src/main/java
    
    1. 然后在这个目录树中创建程序文件 SimpleApp.java
    vim ~/sparkapp2/src/main/java/SimpleApp.java
    
    # 文件内容如下:
        /*** SimpleApp.java ***/
            import org.apache.spark.api.java.*;
            import org.apache.spark.api.java.function.Function;
         
            public class SimpleApp {
                public static void main(String[] args) {
                    String logFile = "file:///usr/local/spark/README.md"; // Should be some file on your system
                    JavaSparkContext sc = new JavaSparkContext("local", "Simple App",
                        "file:///usr/local/spark/", new String[]{"target/simple-project-1.0.jar"});
                    JavaRDD<String> logData = sc.textFile(logFile).cache();
         
                    long numAs = logData.filter(new Function<String, Boolean>() {
                        public Boolean call(String s) { return s.contains("a"); }
                    }).count();
         
                    long numBs = logData.filter(new Function<String, Boolean>() {
                        public Boolean call(String s) { return s.contains("b"); }
                    }).count();
         
                    System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);
                }
            }
    
    1. 接着创建声明文件(声明该独立应用程序的信息以及与Spark的依赖关系)
    vim ~/sparkapp2/pom.xml
    
    # 文件内容如下:
     <project>
            <groupId>edu.berkeley</groupId>
            <artifactId>simple-project</artifactId>
            <modelVersion>4.0.0</modelVersion>
            <name>Simple Project</name>
            <packaging>jar</packaging>
            <version>1.0</version>
            <repositories>
                <repository>
                    <id>Akka repository</id>
                    <url>http://repo.akka.io/releases</url>
                </repository>
            </repositories>
            <dependencies>
                <dependency> <!-- Spark dependency -->
                    <groupId>org.apache.spark</groupId>
                    <artifactId>spark-core_2.11</artifactId>
                    <version>2.1.0</version>
                </dependency>
            </dependencies>
        </project>
    
    1. 最后你可以使用 find 命令查看一下文件结构,如果没有问题你就可以使用 maven 打包了。
    find ~/sparkapp2/
    
    # 执行打包命令
    cd sparkapp2/
    /usr/local/maven/bin/mvn package
    

    运行截图如下:
    写文件

    1. 当看到绿色的 SUCCESS 就代表打包成功了,如下图:

    打包成功
    注:上面标的是 1 个小时,但我感觉打包了不止一个小时,等待总是漫长的~

    1. 提交程序运行
    /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar
    #上面命令执行后会输出太多信息,可以不使用上面命令,而使用下面命令查看想要的结果
    
    /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar 2>&1 | grep "Lines with a"
    
    
    # 参数解读如下:
    ./bin/spark-submit 
      --class <main-class>  //需要运行的程序的主类,应用程序的入口点
      --master <master-url>  //Master URL,下面会有具体解释
      --deploy-mode <deploy-mode>   //部署模式
      ... # other options  //其他参数
      <application-jar>  //应用程序JAR包
      [application-arguments] //传递给主类的主方法的参数
    

    这里放下运行第一条命令的截图:

    运行结果
    注:具体可参见林子雨教授博客:Spark2.1.0入门:Spark的安装和使用

    二、Enjoy!

  • 相关阅读:
    Spring Boot 配置加载顺序详解
    JVM总结篇
    nginx负载均衡的策略
    布隆过滤器的方式解决缓存穿透问题
    Spring Cloud Eureka自我保护机制(服务无法剔除)
    缓存穿透,缓存击穿,缓存雪崩解决方案分析
    高并发秒杀系统总结
    Linux环境进程间通信(一)
    HDU 1695 GCD(容斥定理)
    数据结构精要------冒泡与直接排序算法
  • 原文地址:https://www.cnblogs.com/amnotgcs/p/12694344.html
Copyright © 2011-2022 走看看