b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

apache支持java吗 JavaSpark-RDD编程-常见操作、持久化、函数传递(2)

电脑杂谈  发布时间:2018-01-03 22:14:51  来源:网络整理

通过转化操作,从已有的 RDD 中派生出新的 RDD,Spark 会使用谱系图(lineage graph)来记录这些不同 RDD 之间的依赖关系。Spark 需要用这些信息来按需 计算每个 RDD,也可以依靠谱系图在持久化的 RDD 丢失部分数据时恢复所丢失的数据

行动操作

对数据进行实际的计算,行动操作需要生成实际的输出,它们会强制执行那些求值必须用到的RDD转化操作

apache支持java吗_java apache commons_java apache安装

System.out.println(outcome.collect());  
System.out.println(outcome.count());
RDD.take(10)

使用 take() 获取了RDD 中的少量元素。然后在本地 遍历这些元素,并在驱动器端打印出来。RDD还有一个 collect() 函数,可以用来获取整 个 RDD中的数据。只有当你的整个数据集能在单台机器的内存中放得下时,才能使用collect,因此,collect()不能用在数据集上。

在大多数情况下,RDD 不能通过 collect() 收集到驱动器进程中,因为它们一般都很大。

每当我们调用一个新的行动操作时,整个 RDD 都会从头开始计算。要避免这种低效的行为,用户可以将中间结果持久化

惰性操作

惰性求值意味着当我们对 RDD 调用转化操作,操作不会立即执行。 Spark 会在内部记录下所要求执行的操作的相关信息。我们不应该把 RDD 看作存 放着特定数据的数据集,而最好把每个 RDD 当作我们通过转化操作构建出来的、记录如 何计算数据的指令列表。把数据读取到 RDD 的操作也同样是惰性的。和转化操作一样的是, 读取数据的操作也有可能会多次执行。

虽然转化操作是惰性求值的,但还是可以随时通过运行一个行动操作来强制 Spark 执行 RDD 的转化操作,比如使用 count()。

Spark 使用惰性求值,这样就可以把一些操作合并到一起来减少计算数据的步骤。( Hadoop MapReduce 的系统中,开发者常常花费大量时间考虑如何把操作组合到一起,以 减少 MapReduce 的周期数。apache支持java吗

传递函数

Spark 的大部分转化操作和一部分行动操作,都需要依赖用户传递的函数来计算。支持的三种主要语言中都略有不同

Java

在 Java 中,函数需要作为实现了 Spark 的 org.apache.spark.api.java.function 包中的任 一函数接口的对象来传递,不同返回类型有不同接口

这里写图片描述

//匿名类进行函数传递
RDD<String> errors = lines.filter(new Function<String, Boolean>() {   public Boolean call(String x) { return x.contains("error"); } });

//使用具名类进行函数传递
class ContainsError implements Function<String, Boolean>() {   public Boolean call(String x) { return x.contains("error"); } } 

RDD<String> errors = lines.filter(new ContainsError());

常见的转化操作和行动操作

包含特定数据类型的 RDD 还支持一些附加操作,例如,数字类型的 RDD 支持统计型函数操作,而键值对形式的 RDD 则支持诸如根据键聚合数据的键值对操作。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-57960-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 李念瑾
      李念瑾

      还是存e租宝吧一年14600

    热点图片
    拼命载入中...