spark自定义RDD

本文介绍了为何需要自定义Spark的RDD,通过一个项目实例展示了如何在Scala和Java混合编程环境下创建自定义RDD。项目涉及设置Maven配置、日志配置,以及实现RDD的`getPartitions`、`compute`、`getPreferredLocations`接口。最后,通过测试验证了自定义RDD的正确性和性能,并对此进行了总结。
摘要由CSDN通过智能技术生成

一、为什么需要自定义RDD

       1. spark提供了很多方法读数据源,比如我们当前可以从hdfs文件、jdbc、mongo、hbase等等将数据包装成RDD供我们后续进行处理。如果我们想要读memcache中的数据恐怕就没有现成的了,需要我们自己实现自己的RDD。

       2. RDD是一种弹性分布式数据集,本质就是对数据的封装与抽象。讲道理我们可以将任何我们想要的数据按照我们的业务情况将数据进行分片,而不是对spark的API深度依赖。

二、搭建项目

本demo完成功能:

       1. scala与java混合编程,核心的部分交给scala,需要我们外部扩展的使用java编写

       2. 创建的RDD共有10个partition,每一个partition共有10000个整数

项目搭建:

1. maven配置

<dependencies>
        <!-- spark -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.11</artifactId>
            <version>2.2.0</version>
        </dependency>
        <!-- log -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifact

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值