(八)map,filter,flatMap算子-Java&Python版Spark
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的更多相关文章
- (九)groupByKey,reduceByKey,sortByKey算子-Java&Python版Spark
groupByKey,reduceByKey,sortByKey算子 视频教程: 1.优酷 2. YouTube 1.groupByKey groupByKey是对每个key进行合并操作,但只生成一个 ...
- (七)Transformation和action详解-Java&Python版Spark
Transformation和action详解 视频教程: 1.优酷 2.YouTube 什么是算子 算子是RDD中定义的函数,可以对RDD中的数据进行转换和操作. 算子分类: 具体: 1.Value ...
- (四)Spark集群搭建-Java&Python版Spark
Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...
- (二)Spark-Linux环境准备-Java&Python版Spark
Spark-Linux环境准备 视频教程: 1.优酷 2.YouTube 硬软件环境 1.虚拟机:VMware Workstation 12 2.虚拟机操作系统:RedHat5u4,单核,1G内存,2 ...
- (一)Spark简介-Java&Python版Spark
Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...
- (三)Spark-Hadoop集群搭建-Java&Python版Spark
Spark-Hadoop集群搭建 视频教程: 1.优酷 2.YouTube 配置java 启动ftp [root@master ~]# /etc/init.d/vsftpd restart 关闭 vs ...
- (五)什么是RDD-Java&Python版Spark
什么是RDD 视频教程: 1.优酷 2.YouTube RDD是个抽象类,全称为Resilient Distributed Datasets,是一个容错的.并行的数据结构,可以让用户显式地将数据存储到 ...
- (六)Spark-Eclipse开发环境WordCount-Java&Python版Spark
Spark-Eclipse开发环境WordCount 视频教程: 1.优酷 2.YouTube 安装eclipse 解压eclipse-jee-mars-2-win32-x86_64.zip Java ...
- Java流中的map算子和flatMap算子的区别
map算子和flatMap算子 map和flatMap都是映射(转换),那么他们之间究竟有什么区别呢? 1.我们先简单了解下map算子: @org.junit.Test public void tes ...
随机推荐
- [原创]关于ORACLE的使用入门
Oracle===============================数据库:Oracle------>甲骨文(Oracle) 49+%DB2---------->IBM 49+%Sq ...
- 爬虫技术 -- 进阶学习(十)网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)
最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决定试一试~ 于是到https://www.nuget.org/packages/Scrapy ...
- TokuDB存储引擎
TokuDB是Tokutek公司开发的基于ft-index(Fractal Tree Index)键值对的存储引擎. 它使用索引加快查询速度,具有高扩展性,并支持hot scheme modifica ...
- Linux ERRNO
摘自Linux-3.18.20的头文件include/uapi/asm-generic/errno-base.h和include/uapi/asm-generic/errno.h: #define E ...
- Linux主机上实现树莓派的交叉编译及文件传输,远程登陆
0.环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspb ...
- C# if中连续几个条件判断
C# if中连续几个条件判断 1.if (条件表达式1 && 条件表达式2) 当条件表达式1为true时 using System; using System.Collections. ...
- Java Swing interview
http://www.careerride.com/Swing-AWT-Interview-Questions.aspx Swing interview questions and answers ...
- python学习笔记(基础二:注释、用户输入、格式化输出)
注释 单行:# 多行:上下各用3个连续单引号或双引号 3个引号除了多行注释,还可以打印多行 举例: msg = ''' name = "Alex Li" name2 = name ...
- JDBC介绍
1.DriverManager用来建立和数据库的链接以及管理JDBC驱动程序 driverManager的常用方法 方法 描述 registerDriver(Driver driver) 在Derve ...
- WCF服务启用与配置端口共享
在 Windows Communication Foundation (WCF) 应用程序中使用 net.tcp:// 端口共享的最简单方式是使用 NetTcpBinding 公开一个服务. 此绑定提 ...