map,filter,flatMap算子

视频教程:

1、优酷

2、YouTube

1、map

map是将源JavaRDD的一个一个元素的传入call方法,并经过算法后一个一个的返回从而生成一个新的JavaRDD。

java:

 package com.bean.spark.trans;

 import java.util.Arrays;
import java.util.List;
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;
/**
*
* @author RedBean
*map
*/
public class TraMap {
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setMaster("local");
conf.setAppName("map");
System.setProperty("hadoop.home.dir", "D:/tools/spark-2.0.0-bin-hadoop2.6");
JavaSparkContext sc = new JavaSparkContext(conf);
List<Integer> number = Arrays.asList(0,1,2,3,4,5,6,7,8,9);
JavaRDD<Integer> numberRDD = sc.parallelize(number);
JavaRDD<Integer> results = numberRDD.map(new Function<Integer, Integer>() {
@Override
public Integer call(Integer s) throws Exception {
// TODO Auto-generated method stub
return s * 5;
}
});
System.out.println(results.collect());
}
}

python:

 # -*- coding:utf-8 -*-

 from __future__ import print_function
from pyspark import SparkConf
from pyspark import SparkContext
import os if __name__ == '__main__':
os.environ['SPARK_HOME'] = 'D:/tools/spark-2.0.0-bin-hadoop2.6'
conf = SparkConf().setAppName('mapTest').setMaster('local')
sc = SparkContext(conf=conf)
data = sc.parallelize([1,2,3,4,5,6])
def myMap(l):
return l * 5
print(data.map(myMap).collect())

2、filter

返回一个新的数据集,由经过func函数后返回值为true的原元素组成

java:

 package com.bean.spark.trans;

 import java.util.Arrays;
import java.util.List; 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; public class TraFilter {
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setMaster("local");
conf.setAppName("filter");
System.setProperty("hadoop.home.dir", "D:/tools/spark-2.0.0-bin-hadoop2.6");
JavaSparkContext sc = new JavaSparkContext(conf);
List<Integer> number = Arrays.asList(0,1,2,3,4,5,6,7,8,9);
JavaRDD<Integer> numberRDD = sc.parallelize(number);
JavaRDD<Integer> results = numberRDD.filter(new Function<Integer, Boolean>() { @Override
public Boolean call(Integer s) throws Exception {
// TODO Auto-generated method stub
return s % 2 == 0;
}
});
System.out.println(results.collect());
}
}

python:

 # -*- coding:utf-8 -*-

 from __future__ import print_function
from pyspark import SparkConf
from pyspark import SparkContext
import os if __name__ == '__main__':
os.environ['SPARK_HOME'] = 'D:/tools/spark-2.0.0-bin-hadoop2.6'
conf = SparkConf().setAppName('filterTest').setMaster('local')
sc = SparkContext(conf=conf)
data = sc.parallelize([1,2,3,4,5,6])
def filterFun(l):
return l > 2
print(data.filter(filterFun).collect())

3、flatMap

将一条 rdd数据使用你定义的函数给分解成多条 rdd数据。

java:

 package com.bean.spark.trans;

 import java.util.Arrays;
import java.util.Iterator; 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.FlatMapFunction; public class TraFlatMap {
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setMaster("local");
conf.setAppName("FlatMap");
System.setProperty("hadoop.home.dir", "D:/tools/spark-2.0.0-bin-hadoop2.6");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> context = sc.textFile("D:/tools/data/flatMap/flatMap.txt");
JavaRDD<String> results = context.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterator<String> call(String s) throws Exception {
// TODO Auto-generated method stub
return Arrays.asList(s).iterator();
}
});
System.out.println(results.collect()); }
}

python:

 # -*- coding:utf-8 -*-

 from __future__ import print_function
from pyspark import SparkConf
from pyspark import SparkContext
import os if __name__ == '__main__':
os.environ['SPARK_HOME'] = 'D:/tools/spark-2.0.0-bin-hadoop2.6'
conf = SparkConf().setAppName('filterTest').setMaster('local')
sc = SparkContext(conf=conf)
data = sc.parallelize(["Hello World","Spark Hadoop Storm","java python c"])
def flatFun(l):
return l.split(" ")
print(data.flatMap(flatFun).collect())

(八)map,filter,flatMap算子-Java&Python版Spark的更多相关文章

  1. (九)groupByKey,reduceByKey,sortByKey算子-Java&Python版Spark

    groupByKey,reduceByKey,sortByKey算子 视频教程: 1.优酷 2. YouTube 1.groupByKey groupByKey是对每个key进行合并操作,但只生成一个 ...

  2. (七)Transformation和action详解-Java&Python版Spark

    Transformation和action详解 视频教程: 1.优酷 2.YouTube 什么是算子 算子是RDD中定义的函数,可以对RDD中的数据进行转换和操作. 算子分类: 具体: 1.Value ...

  3. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...

  4. (二)Spark-Linux环境准备-Java&Python版Spark

    Spark-Linux环境准备 视频教程: 1.优酷 2.YouTube 硬软件环境 1.虚拟机:VMware Workstation 12 2.虚拟机操作系统:RedHat5u4,单核,1G内存,2 ...

  5. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...

  6. (三)Spark-Hadoop集群搭建-Java&Python版Spark

    Spark-Hadoop集群搭建 视频教程: 1.优酷 2.YouTube 配置java 启动ftp [root@master ~]# /etc/init.d/vsftpd restart 关闭 vs ...

  7. (五)什么是RDD-Java&Python版Spark

    什么是RDD 视频教程: 1.优酷 2.YouTube RDD是个抽象类,全称为Resilient Distributed Datasets,是一个容错的.并行的数据结构,可以让用户显式地将数据存储到 ...

  8. (六)Spark-Eclipse开发环境WordCount-Java&Python版Spark

    Spark-Eclipse开发环境WordCount 视频教程: 1.优酷 2.YouTube 安装eclipse 解压eclipse-jee-mars-2-win32-x86_64.zip Java ...

  9. Java流中的map算子和flatMap算子的区别

    map算子和flatMap算子 map和flatMap都是映射(转换),那么他们之间究竟有什么区别呢? 1.我们先简单了解下map算子: @org.junit.Test public void tes ...

随机推荐

  1. Leetcode 笔记 99 - Recover Binary Search Tree

    题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped ...

  2. 我的第一个python程序--给2.x的print代码加上括号

    最近想学习一门脚本语言,综合考虑,选择了python. 花了几天时间看完了 简明 Python 教程 ,想着应该写点什么东西才好,刚好我使用的是3.x版本,以前好多2.x的代码都直接报错,尤其是pri ...

  3. CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection)

    CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection) 2016-08-13 由于CSh ...

  4. ABP源码分析三十九:ABP.Hangfire

    ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的. HangfireBackgroundJo ...

  5. ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)

    Bipin Joshi (http://www.binaryintellect.net/articles/f1cee257-378a-42c1-9f2f-075a3aed1d98.aspx) Uplo ...

  6. Log4net入门(日志文件篇)

    在上一篇Log4net入门(控制台篇)中,我们将日志信息输出到控制台中,在这一篇中,我们将描述如何将日志信息写到文件中.要将日志信息写入文件非常简单,只需要在Log4net.config配置文件中添加 ...

  7. 多线程同步工具——LockSupport

    用例1:子线程等待主线程发放许可! public static void main(String[] args) { Thread thread = new Thread(){ public void ...

  8. 【Java心得总结一】Java基本类型和包装类型解析

    说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...

  9. MongoDB初识

    参考: MongoDB资料汇总专题:

  10. cin.ignore()函数的用法

    cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用.每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin. ...