spark-学习笔记--1 wordcount

spark-学习笔记--1  wordcount

 

spark RDD

 

spark :分布式、基于内存、迭代式、

RDD :弹性分布式数据集

 

RDD是一个逻辑上的数据集合    可以分为多个分区  分布到不同的机器上

 

RDD的弹性: 默认是放在节点内存里的 ,内存装不下时会放到磁盘,但这对使用者是透明的。

            自动的进行内存和磁盘切换机制 就是它说的弹性。

 

RDD的容错性 :节点失败 会从源重新计算

 

 

spark 核心编程:

1、定义初始的RDD  读取数据

2、定义算子--  对数据的操作

3、多步操作处理数据

4、保存结果

 

 

package com.yzl.spark.sparkstudy;

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

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.Function;
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;

/**
 * Hello world!
 *
 */
public class App {
	public static void main(String[] args) {

		// 1、创建 SparkConf
		SparkConf sc = new SparkConf();
		sc.setAppName("wordCount");
		sc.setMaster("local");

		// 2、创建JavaSparkContext
		JavaSparkContext jsc = new JavaSparkContext(sc);

		// 3、创建RDD
		JavaRDD lines = jsc.textFile("/666666666.txt");

		JavaRDD words = lines.flatMap(new FlatMapFunction() {

			public Iterator call(String arg0) throws Exception {

				
				List list = Arrays.asList(arg0.split(" |\\.|_|=|/"));
				ArrayList arrayList = new ArrayList(list);
				
				return arrayList.iterator();
			}

		});

		JavaPairRDD pair = words.mapToPair(new PairFunction() {

			public Tuple2 call(String key) throws Exception {

				return new Tuple2(key, 1);
			}
		});
		
		JavaPairRDD counts = pair.reduceByKey(new Function2() {

					public Integer call(Integer arg0, Integer arg1) throws Exception {
						 
						return arg0 + arg1;
					}
		});
		
		//action 
		counts.foreach(new VoidFunction>() {
			
			public void call(Tuple2 arg0) throws Exception {
				
				System.out.println(arg0._1 +"------"+arg0._2);
				
			}
		});
		
		jsc.close();
	}
}

 

 

你可能感兴趣的:(spark)