Spark学习笔记 ---workConut

Spark 学习笔记之—WordCount 笔记。

1.简单的解释:

1.SparkConf :

 SparkConf conf  = new SparkConf();
        conf.setMaster("local[5]");  
        conf.setAppName("WordConuts");
1.可以设置spark 的运行模式
		1.1 local --在eclipse ,IDEA中开发spark程序要用local模式,本地模式,多用于测试
        1.2 stanalone -- Spark 自带的资源调度框架,支持分布式搭建,Spark任务可以依赖standalone调度资源
        1.3.yarn -- hadoop 生态圈中资源调度框架。Spark 也可以基于yarn 调度资源
        1.4 mesos -- 资源调度框架
2.可以设置spark在webui 中显示的的application 的名称
3.可以设置当前spark application  运行内存(内存 + core)`

2.JavaSparkContext

--JavaSparkContext 是通往集群的唯一通道
JavaSparkContext sc = new JavaSparkContext(conf);

3.代码如下:

package com.wudl.spark.core;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import scala.Tuple2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class WordConuts {

    public static void main(String[] args) {
        /**
         * conf  :
         *        1.可以设置spark 的运行模式
         *            1.1 local --在eclipse ,IDEA中开发spark程序要用local模式,本地模式,多用于测试
         *            1.2 stanalone -- Spark 自带的资源调度框架,支持分布式搭建,Spark任务可以依赖standalone调度资源
         *            1.3.yarn -- hadoop 生态圈中资源调度框架。Spark 也可以基于yarn 调度资源
         *            1.4 mesos -- 资源调度框架
         *        2.可以设置spark在webui 中显示的的application 的名称
         *        3.可以设置当前spark application  运行内存(内存 + core)
         */
        SparkConf conf  = new SparkConf();
        conf.setMaster("local[1]");
        conf.setAppName("WordConuts");
        /*
        * sparkContext 是通往集群的唯一通道
        * */
        JavaSparkContext sc = new JavaSparkContext(conf);
        /**
         *  spark 读取文件
         */
        final JavaRDD lines = sc.textFile("I:\\ideaWorkSpace\\com-wudl-spark\\ReadMe.txt");
        /**
         * flatMap 进一条数据出多条数据,一对多关系
         */
        JavaRDD words = lines.flatMap(new FlatMapFunction() {
            public Iterator call(String s) throws Exception {
                List list = new ArrayList();
                String[] arr = s.split(" ");
                for(String ss :arr){
                    list.add(ss);
                }
                return list.iterator();
            }
        });
        /**
         *  * 在java中 如果想让某个RDD转换成K,V格式 使用xxxToPair
         * 		 * K,V格式的RDD:JavaPairRDD pariWords = words.mapToPair(new PairFunction() {
            public Tuple2 call(String word) throws Exception {
                return new Tuple2(word, 1);
            }
        });
        /**
         *  reduceByKey
         * 		 * 1.先将相同的key分组
         * 		 * 2.对每一组的key对应的value去按照你的逻辑去处理
         */
        JavaPairRDD result = pariWords.reduceByKey(new Function2() {
            public Integer call(Integer v1, Integer v2) throws Exception {
                return v1 + v2;
            }
        });
        result.foreach(new VoidFunction>() {
            public void call(Tuple2 stringIntegerTuple2) throws Exception {
                System.out.println("tuples---"+stringIntegerTuple2);
            }
        });
        sc.close();
    }
}

你可能感兴趣的:(Spark,大数据)