一、为什么需要自定义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