Spark常用API<Java>

1.Transformation操作<Java>

主要做的是就是将一个已有的RDD生成另外一个RDD。Transformation具有lazy特性(延迟加载)。Transformation算子的代码不会真正被执行。只有当我们的程序里面遇到一个action算子的时候,代码才会真正的被执行对

1.1一个RDD进行转换操作

举例:对一个数组为{1, 2, 3, 3}的RDD进行基本的RDD转化操作

函数名

含义

示例

结果

map(func) 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 rdd.map(x => x + 1) {2, 3, 4, 4}
flatMap() 将函数应用于RDD 中的每个元素,将返回的迭代器的所有内容构成新的RDD。通常用来切分单词 rdd.flatMap(x->Arrays.asList(x.split(",")).iterator()) {1, 2, 3,3}
parallelize()
使用已经存在的迭代器或者集合通过调用spark驱动程序提供的parallelize函数来创建并行集合
JavaRDD<String> rdd = jsc.parallelize(Arrays.asList("haimie","jojo"));
 
filter() 返回一个由通过传给filter()的函数的元素组成的RDD rdd.filter(x->x!=1) {2,3,3,}
distinct() 去重 rdd.distinct() {1,2,3}
sample(s,faraction,[seed]) 对RDD采样,以及是否替换 rdd.sample(false,0.5) 非确定的

Java实现

 

import org.apache.spark.SparkConf;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.sql.SparkSession;

 

/**

* @author sjy on 2019-12-19

* @version 1.0

*/

public class SparkCoreApiMaster {

private static JavaSparkContext jsc;

public static void main(String[] args) {

SparkConf conf = new SparkConf();

SparkSession session = new SparkSession.Builder()

.config(conf)

.appName("RunModifyiedFilm:[email protected]").master("local")

.getOrCreate();

jsc = new JavaSparkContext(session.sparkContext());

SparkApiCore master = new SparkApiCore();

master.testSparkCoreApiMap(jsc);

}

}


1.1.1Map

单个RDDmap 折叠源码

import org.apache.spark.api.java.JavaRDD;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.api.java.function.Function;

import java.io.Serializable;

import java.util.Arrays;

 

/**

 * @author sjy on 2019-12-19

 * @version 1.0

 */

public class SparkApiCore implements Serializable {

     

    public void testSparkCoreApiMap(JavaSparkContext jsc) {

        JavaRDD<String> rdd = jsc.parallelize(Arrays.asList("a","b","c"));// 构造数据源,String的数据

        //java表达式

        JavaRDD<String> logData = rdd.map((Function<String, String>) v1 -> v1+"!");

        //lamda形式 等效

        System.out.println("----MapAPI start----");

        logData.collect().stream().forEach(s-> System.out.println(s.toString()));

        System.out.println("----MapAPI end----");

         

        logData = rdd.map(p -> p + '!');

        System.out.println("----MapAPI start----");

        logData.collect().stream().forEach(s-> System.out.println(s.toString()));

        System.out.println("----MapAPI end----");

    }

}

执行结果:

----MapAPI start----

a!
b!
c!
----MapAPI end----

1.1.2FlatMap

单个RDDflatMap 折叠源码

import org.apache.spark.api.java.JavaRDD;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.api.java.function.Function;

import java.io.Serializable;

import java.util.Arrays;

 

/**

 * @author sjy on 2019-12-19

 * @version 1.0

 */

public class SparkApiCore implements Serializable {

     

     /**

     * fl

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值