zoukankan      html  css  js  c++  java
  • Spark练习之创建RDD(集合、本地文件),RDD持久化及RDD持久化策略

    一、创建RDD

    在这里插入图片描述

    二、并行化集合创建RDD

    在这里插入图片描述

    2.1 Java并行创建RDD——计算1-10的累加和

    import org.apache.spark.SparkConf;
    import org.apache.spark.api.java.JavaRDD;
    import org.apache.spark.api.java.JavaSparkContext;
    import org.apache.spark.api.java.function.Function2;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * 并行创建RDD
     * eg:计算1-10的累加和
     */
    public class JavaParallelizeCollection {
        public static void main(String[] args) {
            //创建SparkConf
            SparkConf conf = new SparkConf()
                    .setAppName("JavaParallelizeCollection")
                    .setMaster("local");
    
            //创建JavaSparkContext
            JavaSparkContext sc = new JavaSparkContext(conf);
    
            //要通过并行化集合的方式创建RDD,那么就调用SparkContext以及其子类的parallelize()方法
            List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
            JavaRDD<Integer> integerJavaRDD = sc.parallelize(numbers);
    
            //执行reduce算子操作
            //相当于,先进行1+2=3;然后在用3+3=6,然后在用6+4=10,以此类推
            int sum = integerJavaRDD.reduce(new Function2<Integer, Integer, Integer>() {
    
                private static final long serialVersionUID = 1L;
    
                @Override
                public Integer call(Integer num1, Integer num2) throws Exception {
                    return num1 + num2;
                }
            });
    
            //输出累加和
            System.out.println("1到10的累加和为:" + sum);
    
            //关闭JavaSparkContext
            sc.close();
    
    
        }
    }
    

    2.2 Scala并行创建RDD——计算1-10的累加和

    import org.apache.spark.SparkConf;
    import org.apache.spark.SparkContext;
    
    object ScalaParallelizeCollection {
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf()
          .setAppName("JavaParallelizeCollection")
          .setMaster("local")
    
        val sc = new SparkContext(conf)
    
        val numbers = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
        val numberRDD = sc.parallelize(numbers, 5)
    
        val sum = numberRDD.reduce(_ + _)
    
        println("1到10的累加和:" + sum)
    
      }
    }
    

    三、使用本地文件和HDFS创建RDD

    在这里插入图片描述

    在这里插入图片描述

    3.1 Java—使用本地文件创建RDD

    
    import org.apache.spark.SparkConf;
    import org.apache.spark.api.java.JavaRDD;
    import org.apache.spark.api.java.JavaSparkContext;
    import org.apache.spark.api.java.function.Function;
    import org.apache.spark.api.java.function.Function2;
    
    /**
     * 使用本地文件创建RDD
     * eg:统计文本文件字数
     */
    public class LocalFile {
        public static void main(String[] args) {
            //创建SparkConf
            SparkConf conf = new SparkConf()
                    .setAppName("LocalFile")
                    .setMaster("local");
    
            //创建JavaSparkContext
            JavaSparkContext sc = new JavaSparkContext(conf);
    
            //使用SparkContext以及其子类的textFile()方法,针对本地文件创建RDD
            JavaRDD<String> lines = sc.textFile("C://Users//xxx//Desktop//spark.txt");
    
            //统计文本文件内的字数
            JavaRDD<Integer> lineLength = lines.map(new Function<String, Integer>() {
                private static final long servialVersionUID = 1L;
    
                @Override
                public Integer call(String s) throws Exception {
                    return s.length();
                }
            });
    
            int count = lineLength.reduce(new Function2<Integer, Integer, Integer>() {
                private static final long servialVersionUID = 1L;
    
                @Override
                public Integer call(Integer v1, Integer v2) throws Exception {
                    return v1 + v2;
                }
            });
    
            System.out.println("文件总字数是:" + count);
    
            //关闭JavaSparkContext
            sc.close();
    
        }
    
    }
    

    3.2 Scala—使用本地文件创建RDD

    
    import org.apache.spark.{SparkConf, SparkContext}
    
    /**
      * 使用本地文件创建RDD
      * eg:统计文本文件字数
      */
    object ScalaLocalFile {
    
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf()
          .setAppName("ScalaLocalFile")
          .setMaster("local")
    
        val sc = new SparkContext(conf)
    
        val lines = sc.textFile("C://Users//xxx//Desktop//spark.txt", 1)
    
        val count = lines.map { line => line.length() }.reduce(_ + _)
    
        println("统计文本文件字数:" + count)
      }
    
    }
    

    四、RDD持久化原理

    在这里插入图片描述

    五、不使用RDD持久化的问题的原理

    在这里插入图片描述

    六、RDD持久化工作的原理

    在这里插入图片描述

    七、RDD持久化策略

    在这里插入图片描述

    在这里插入图片描述

    八、如何选择RDD持久化策略

    在这里插入图片描述

  • 相关阅读:
    Java微信公众平台开发(一)--接入微信公众平台
    微信开发准备
    微信公众平台开发前言
    Spring------自动化装配Bean(三)
    Spring------自动化装配Bean(二)
    Spring------自动化装配Bean(一)
    单链表的基本操作
    线性表的基本操作
    Apache Hadoop各版本发布的SVN地址
    configuration on ubuntu server
  • 原文地址:https://www.cnblogs.com/aixing/p/13327443.html
Copyright © 2011-2022 走看看