首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何创建模拟元素的Spark RDD?

如何创建模拟元素的Spark RDD?
EN

Stack Overflow用户
提问于 2018-08-09 19:44:57
回答 1查看 567关注 0票数 0

我想创建一个RDD (实际的,不是模拟的),它在单元测试中包含模拟的元素(使用Mockito)。

我的尝试是:

代码语言:javascript
运行
AI代码解释
复制
lazy val sc = SparkContext.getOrCreate()
val myRDD = sc.parallelize(Seq( (Mockito.mock(classOf[ImmutableBytesWritable]), Mockito.mock(classOf[Result])) ))

其中ImmutableBytesWritableResult来自HBase接口。我有org.apache.spark.SparkException: Task not serializable

有没有可能实现我的目标?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 18:20:32

默认情况下,Mockito mock是不可序列化的,这就是出现错误的原因。

要创建可序列化的mock,您必须显式定义它:

代码语言:javascript
运行
AI代码解释
复制
mock = Mockito.mock(
    classOf[ImmutableBytesWritable],
    Mockito.withSettings().serializable()
)

同样的事情也应该应用到你的Result模拟中。

如果你得到一个java.lang.ClassNotFoundException: org.apache.hadoop.hbase.io.ImmutableBytesWritable$MockitoMock$...异常,你可能需要使用:

代码语言:javascript
运行
AI代码解释
复制
import org.mockito.mock.SerializableMode

mock = Mockito.mock(
    classOf[ImmutableBytesWritable],
    Mockito.withSettings().serializable(SerializableMode.ACROSS_CLASSLOADERS)
)

最后,你应该有类似这样的东西:

代码语言:javascript
运行
AI代码解释
复制
import org.apache.spark.SparkContext 
import org.apache.spark.SparkConf    

import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.client.Result

import org.mockito.Mockito
import org.mockito.mock.SerializableMode

object Test extends App {

    val conf = new SparkConf()
        .setMaster("local[2]")
        .setAppName("test")
    lazy val sc = new SparkContext(conf)

    val mockImmutableBytesWritable = Mockito.mock(
        classOf[ImmutableBytesWritable],
        Mockito.withSettings().serializable(
            SerializableMode.ACROSS_CLASSLOADERS
        )
    )

    val mockResult = Mockito.mock(
        classOf[Result],
        Mockito.withSettings().serializable(
            SerializableMode.ACROSS_CLASSLOADERS
        )
    )

    val myRDD = sc.parallelize(Seq((mockImmutableBytesWritable, mockResult)))

    println(myRDD.count)

    sc.stop()

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51774731

复制
相关文章
Spark2.3.0 创建RDD
Spark的核心概念是弹性分布式数据集(RDD),RDD 是一个可容错、并行操作的分布式元素集合。有两种方法可以创建 RDD 对象:
smartsi
2019/08/07
8550
Spark核心RDD、什么是RDD、RDD的属性、创建RDD、RDD的依赖以及缓存、
1:什么是Spark的RDD??? RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 2:RDD的属性: a、一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,
别先生
2018/04/02
1.2K0
Spark核心RDD、什么是RDD、RDD的属性、创建RDD、RDD的依赖以及缓存、
Spark(RDD,CSV)创建DataFrame方式
spark将csv转换为DataFrame,可以先文件读取为RDD,然后再进行map操作,对每一行进行分割。 再将schema和rdd分割后的Rows回填,sparkSession创建的dataFrame
Tim在路上
2020/08/04
1.5K0
spark RDD
RDD,全称为Resilient Distributed Datasets(弹性分布式数据集),是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。在这些操作中,诸如map、flatMap、filter等转换操作实现了函数式编程模式,很好地契合了Scala的集合操作。除此之外,RDD还提供了诸如join、groupBy、reduceByKey等更为方便的操作(注意,reduceByKey是action,而非transformation),以支持常见的数据运算。
小石头
2022/11/10
4820
spark RDD
2021年大数据Spark(十三):Spark Core的RDD创建
官方文档:http://spark.apache.org/docs/latest/rdd-programming-guide.html#resilient-distributed-datasets-rdds
Lansonli
2021/10/09
5270
Spark RDD
弹性分布式数据集(RDD)不仅仅是一组不可变的JVM(Java虚拟机) 对象的分布集,可以让你执行高速运算,而且是Apark Spark的核心。
week
2018/12/07
4980
Spark——RDD
全称为Resilient Distributed Datasets,弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可并行计算的集合。RDD在逻辑上是一个数据集,在物理上则可以分块分布在不同的机器上并发运行。RDD允许用户在执行多个查询时显示的将工作缓存在内存中,后续的查询能够重用工作集,这极大的提升了查询速度。 在Spark 中,对数据的所有操作不外乎创建RDD,转换已有RDD以及调用RDD操作进行求值,每个RDD都被分为多个分区,这些分区运行在集群的不同节点上,RDD可以包含Python,Java,Scala中任意类型的对象,甚至可以是用户自定义对象。 RDD是Spark的核心,也是整个Spark的架构基础。它的特性可以总结如下:
羊羽shine
2019/08/08
6790
Spark高效数据分析04、RDD创建
RDD产生的目的是为了解决开发人员能在大规模的集群中以一种容错的方式进行内存计算,而当前的很多框架对迭代式算法场景与交互性数据挖掘场景的处理性能非常差, 这个是 RDD 提出的动机 基于 MR 的数据迭代处理流程和基于 Spark 的数据迭代处理流程如图所示
红目香薰
2022/11/30
2860
Spark高效数据分析04、RDD创建
Spark RDD的Shuffle
Shuffle的概念来自Hadoop的MapReduce计算过程。当对一个RDD的某个分区进行操作而无法精确知道依赖前一个RDD的哪个分区时,依赖关系变成了依赖前一个RDD的所有分区。比如,几乎所有<key, value>类型的RDD操作,都涉及按key对RDD成员进行重组,将具有相同key但分布在不同节点上的成员聚合到一个节点上,以便对它们的value进行操作。这个重组的过程就是Shuffle操作。因为Shuffle操作会涉及数据的传输,所以成本特别高,而且过程复杂。 下面以reduceByKey为例来介
天策
2018/06/22
6560
Spark笔记6-RDD创建和操作
RDD是只读的,只能在修改的过程进行修改。转换过程是惰性机制。整个转换过程只是记录转换的轨迹,并不会发生真正的计算。只有遇到行动操作action时候,才会发生真正的计算。三种操作:
皮大大
2021/03/02
5000
Spark RDD的Transformation
RDD的Transformation是指由一个RDD生成新RDD的过程,比如前面使用的flatMap、map、filter操作都返回一个新的RDD对象,类型是MapPartitionsRDD,它是RDD的子类。 所有的RDD Transformation都只是生成了RDD之间的计算关系以及计算方法,并没有进行真正的计算。下面还是以WordCount为例进行介绍: val textFile = sc.textFile("README.md") val words = textFile.flatMap(line
天策
2018/06/22
3900
Java接入Spark之创建RDD的两种方式和操作RDD
首先看看思维导图,我的spark是1.6.1版本,jdk是1.7版本 spark是什么? Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的
汤高
2018/01/11
1.8K0
Java接入Spark之创建RDD的两种方式和操作RDD
Spark RDD的Action
RDD的Action是相对Transformation的另一种操作。Transformation代表计算的中间过程,从一个RDD生成新的RDD;而Action代表计算的结束,一次Action调用之后,不再生成新的RDD,结果返回到Driver程序。 鉴于Action具有这样的特点,所以Action操作是不可以在RDD Transformation内部调用的。比如,下面的调用是不允许的: rdd1.map(x => rdd2.values.count() * x) Transformation只是建立计算关
天策
2018/06/22
7410
Spark RDD 基础
[图片摘自[Spark 官网](http://spark.apache.org/)]
李振
2021/11/26
5660
Spark RDD 基础
spark——spark中常说RDD,究竟RDD是什么?
在上一讲当中我们在本地安装好了spark,虽然我们只有local一个集群,但是仍然不妨碍我们进行实验。spark最大的特点就是无论集群的资源如何,进行计算的代码都是一样的,spark会自动为我们做分布式调度工作。
TechFlow-承志
2020/04/14
7020
spark——spark中常说RDD,究竟RDD是什么?
Spark之【RDD编程】详细讲解(No1)——《编程模型的理解与RDD的创建》
上一篇博客《什么是RDD?带你快速了解Spark中RDD的概念!》为大家带来了RDD的概述之后。本篇博客,博主将继续前进,为大家带来RDD编程系列。 该系列第一篇,为大家带来的是编程模
大数据梦想家
2021/01/27
6360
Spark之【RDD编程】详细讲解(No1)——《编程模型的理解与RDD的创建》
Spark RDD详解
RDD(Resilient Distributed Datasets)弹性的分布式数据集,又称Spark core,它代表一个只读的、不可变、可分区,里面的元素可分布式并行计算的数据集。
大数据学习与分享
2020/08/10
8240
Spark RDD详解
Spark RDD篇
RDD是一个抽象,会记录一些信息,他并不是一个真正的集合,但可以像集合一样操作,降低了开发难度。
算法之名
2019/08/20
8960
Spark RDD详解
RDD(Resilient Distributed Datasets)弹性的分布式数据集,又称Spark core,它代表一个只读的、不可变、可分区,里面的元素可分布式并行计算的数据集。
大数据学习与分享
2020/06/29
8470
Spark RDD详解
Spark和RDD究竟该如何理解?
本文主要介绍了Spark和RDD的基本概念、特点以及它们之间的关系。Spark是一种基于内存的分布式计算框架,而RDD则是Spark中的一种数据结构。Spark可以高效地处理迭代计算和交互式计算,而RDD则提供了容错性和自动从节点失败中恢复的功能。它们相辅相成,共同实现高效的大数据处理任务。
挖掘大数据
2017/12/22
1.1K0

相似问题

从Spark RDD中删除元素

10

如何从RDD创建Spark数据集

10

在单元测试中模拟Spark RDD

23

将Spark RDD中的元素相乘

10

创建RDD时找不到spark error RDD类型

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档