spark2.x由浅入深深到底系列六之RDD java api调用scala api的原理
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,学习spark任何的技术之前,请正确理解spark,可以参考:正确理解sparkRDD java api其实底层是调用了scala的api来实现的,所以我们有必要对java api是怎么样去调用sca
千家信息网最后更新 2025年12月02日spark2.x由浅入深深到底系列六之RDD java api调用scala api的原理
学习spark任何的技术之前,请正确理解spark,可以参考:正确理解spark
RDD java api其实底层是调用了scala的api来实现的,所以我们有必要对java api是怎么样去调用scala api,我们先自己简单的实现一个scala版本和java版本的RDD和SparkContext
一、简单实现scala版本的RDD和SparkContext
class RDD[T](value: Seq[T]) { //RDD的map操作 def map[U](f: T => U): RDD[U] = { new RDD(value.map(f)) } def iterator[T] = value.iterator }class SparkContext { //创建一个RDD def createRDD(): RDD[Integer] = new RDD[Integer](Seq(1, 2, 3))}二、简单实现java版本的RDD和SparkContext
//这个时java中的一个接口//我们可以将scala中的map需要的函数其实就是对应着java中的一个接口package com.twq.javaapi.java7.function;public interface Functionextends Serializable { R call(T1 v1) throws Exception;}//这边实现的java版的RDD和SparkContext其实还是用scala代码实现,只不过这些scala代码可以被java代码调用了import java.util.{Iterator => JIterator}import scala.collection.JavaConverters._import com.twq.javaapi.java7.function.{Function => JFunction}//每一个JavaRDD都会含有一个scala的RDD,用于调用该RDD的apiclass JavaRDD[T](val rdd: RDD[T]) { def map[R](f: JFunction[T, R]): JavaRDD[R] = //这里是关键,调用scala RDD中的map方法 //我们将java的接口构造成scala RDD的map需要的函数函数 new JavaRDD(rdd.map(x => f.call(x))) //我们需要将scala的Iterator转成java版的Iterator def iterator: JIterator[T] = rdd.iterator.asJava}//每个JavaSparkContext含有一个scala版本的SparkContextclass JavaSparkContext(sc: SparkContext) { def this() = this(new SparkContext()) //转调scala版本的SparkContext来实现JavaSparkContext的功能 def createRDD(): JavaRDD[Integer] = new JavaRDD[Integer](sc.createRDD())}
三、写java代码调用rdd java api
package com.twq.javaapi.java7;import com.twq.javaapi.java7.function.Function;import com.twq.rdd.api.JavaRDD;import com.twq.rdd.api.JavaSparkContext;import java.util.Iterator;/** * Created by tangweiqun on 2017/9/16. */public class SelfImplJavaRDDTest { public static void main(String[] args) { //初始化JavaSparkContext JavaSparkContext jsc = new JavaSparkContext(); //调用JavaSparkContext的api创建一个RDD JavaRDD firstRDD = jsc.createRDD(); //对创建好的firstRDD应用JavaRDD中的map操作 JavaRDD strRDD = firstRDD.map(new Function() { @Override public String call(Integer v1) throws Exception { return v1 + "test"; } }); //将得到的RDD的结果打印,结果为 //1test //2test //3test Iterator result = strRDD.iterator(); while (result.hasNext()) { System.out.println(result.next()); } }} 以上就是RDD java api调用scala api的实现原理,虽然只举了map操作,但是其他的类似于flatMap操作的实现都是类似的
接下来可以详细了解RDD java的每一个api了
我们可以参考spark core RDD api来详细理解scala中的每一个api。。。
系统学习spark:
1、[老汤] Spark 2.x 之精讲Spark Core:https://edu.51cto.com/sd/88429
2、[老汤]Spark 2.x 之精讲Spark SQL专题:https://edu.51cto.com/sd/16f3d
3、[老汤]Scala内功修炼系列专题:https://edu.51cto.com/sd/8e85b
4、[老汤]Spark 2.x之精讲Spark Streamig:https://edu.51cto.com/sd/8c525
5、[老汤]Spark 2.x精讲套餐:https://edu.51cto.com/sd/ff9a4
6、从Scala到Spark 2.x专题:https://edu.51cto.com/sd/d72af
版本
老汤
代码
专题
函数
接口
就是
结果
参考
学习
原理
必要
接下来
关键
内功
功能
只不过
套餐
底层
技术
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
强类型 数据库
銀行网络安全框架
益阳软件开发合同律师哪家好
石岐定制软件开发
山东服务器机柜哪家便宜
对方不给钱我关停服务器违法吗
信创会改变网络安全
服务器驱动怎么样
数据库中如何查询日志记录
超市的数据库
工商银行网络安全自查情况报告
大连台资软件开发公司有多少
无线文件服务器下载
宝中国网络技术有限公司
软件开发外包项目不付款
深圳扫码点餐软件开发
盟威软件开发平台
怎么代理腾讯云服务器
网络安全得注意什么
电脑访问服务器的方法
网络安全与信息化建设情况报告
我的世界服务器管理端指令
数据库复制增加数据
数据库数据怎么用一张表来表示
计算机网络技术是什么月薪
服务器插网卡识别不到
修改阿里云服务器密码
工商银行网络安全自查情况报告
齐鲁工业大学网络安全专业硕士
网络安全公益宣传海报