RDD操作
来源:互联网 发布:算法的概念数学 编辑:程序博客网 时间:2024/04/28 00:26
RDD支持两种操作:转化操作和行动操作,转化操作是返回一个新的RDD的操作比如map()和filter(),行动操作则是向驱动器程序返回结果或把结果写入外部系统的操作,会触发实际的计算比如count(),first(),简而言之就是转化操作返回的是RDD,而行动操作返回的是其他数据类型,下面来一个转化操作的列子:
文本文件内容
现在遍历文本文件,选出里面含error的错误日志:
/** * Created by hbin on 2016/12/9. */import java.util.Arrays;import java.util.List;import breeze.optimize.linear.LinearProgram;import io.netty.util.internal.StringUtil;import org.apache.commons.lang.StringUtils;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;import org.apache.spark.api.java.function.Function;/** * spark对数据的核心抽象 RDD(弹性分布式数据集) * RDD就是分布式的元素集合,在spark中对数据的所有操作不外乎创建RDD * 转化已有RDD以及调用RDD操作进行求值,spark会自动将RDD中的数据分发到集群上, * 并将操作并行化 */public class BasicMap { public static void main(String[] args) throws Exception { SparkConf sparkConf = new SparkConf().setAppName("JavaSparkPi"); JavaSparkContext jsc = new JavaSparkContext(sparkConf); JavaRDD<String> inputRDD=jsc.textFile("E:\\sparkProject\\log.txt"); JavaRDD<String> errorsRDD=inputRDD.filter(new Function<String, Boolean>() { @Override public Boolean call(String s) throws Exception { return s.contains("error"); } }); System.out.println("errorsRDD="+errorsRDD.collect()); }}执行结果:
errorsRDD=[error:, error:, error:, error:, error:, error:, error:, error:, error:, error:, error:, error:, error:, error:]
日志分析过程中创建出的RDD谱系图
spark中的RDD就是一个不可变的分布式对象集合,每个RDD都被分为多个分区,这些分区运行在集群中的不同节点上。RDD可以包含python,Java,Scala中的任意类型的对象。
RDD中的行动操作
/** * Created by hbin on 2016/12/9. */import java.io.Serializable;import java.util.Arrays;import java.util.List;import breeze.optimize.linear.LinearProgram;import io.netty.util.internal.StringUtil;import org.apache.commons.lang.StringUtils;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;import org.apache.spark.api.java.function.Function;import org.apache.spark.api.java.function.Function2;/** * spark对数据的核心抽象 RDD(弹性分布式数据集) * RDD就是分布式的元素集合,在spark中对数据的所有操作不外乎创建RDD * 转化已有RDD以及调用RDD操作进行求值,spark会自动将RDD中的数据分发到集群上, * 并将操作并行化 */public class BasicMap { public static void main(String[] args) throws Exception { SparkConf sparkConf = new SparkConf().setAppName("JavaSparkPi"); JavaSparkContext jsc = new JavaSparkContext(sparkConf); JavaRDD<Integer> RDD1=jsc.parallelize(Arrays.asList(1,2,3,4,5,6,7,8,9),6);// 并行化 Integer sum=RDD1.reduce(new Function2<Integer, Integer, Integer>() { @Override public Integer call(Integer x, Integer y) throws Exception { return x*y; } }); System.out.println("collect()="+RDD1.collect()); System.out.println("count()="+RDD1.count()); System.out.println("countByValue()="+RDD1.countByValue()); System.out.println("take(3)="+RDD1.take(3)); System.out.println("top()="+RDD1.top(3)); System.out.println("takeOrdered(3)="+RDD1.takeOrdered(3)); System.out.println("takeSample(true,3)="+RDD1.takeSample(true,3)); }}
执行结果
collect()=[1, 2, 3, 4, 5, 6, 7, 8, 9]
count()=9
countByValue()={5=1, 1=1, 6=1, 9=1, 2=1, 7=1, 3=1, 8=1, 4=1}
take(3)=[1, 2, 3]
top()=[9, 8, 7]
takeOrdered(3)=[1, 2, 3]
takeSample(true,3)=[2, 6, 5]
0 0
- RDD操作
- 操作RDD
- Spark RDD操作
- RDD特性与操作
- spark RDD keyvalue操作
- Spark RDD transformation操作
- spark RDD transformation操作
- RDD类操作说明
- spark RDD 基本操作
- Pair RDD基本操作
- spark rdd 操作
- Spark RDD创建操作
- RDD之aggregate操作
- RDD笛卡尔操作Cartesian
- RDD创建操作
- pair rdd操作
- Spark中RDD操作
- Spark RDD基本操作
- Log4j2 JDBCAppender的使用
- wireshark怎么抓包、wireshark抓包详细图文教程
- Python-namedtuple,enum
- poj 迷宫问题(路径记录)(DFS,BFS)
- 简化查询
- RDD操作
- thinkphp模糊查询实例
- HTML5 <fullscreen全屏API>
- Bitmap详解
- es5 javascript this的使用
- Windows下获取当前路径和执行路径
- 完全掌握Android Data Binding
- 常用 SQL Server 规范集锦
- Bounding box regression(回归)