欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

spark2.x由淺入深深到底系列六之RDDjavaapi調(diào)用scalaapi的原理

學(xué)習(xí)spark任何的技術(shù)之前,請(qǐng)正確理解spark,可以參考:正確理解spark

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),昭通企業(yè)網(wǎng)站建設(shè),昭通品牌網(wǎng)站建設(shè),網(wǎng)站定制,昭通網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,昭通網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

RDD java api其實(shí)底層是調(diào)用了scala的api來(lái)實(shí)現(xiàn)的,所以我們有必要對(duì)java api是怎么樣去調(diào)用scala api,我們先自己簡(jiǎn)單的實(shí)現(xiàn)一個(gè)scala版本和java版本的RDD和SparkContext

一、簡(jiǎn)單實(shí)現(xiàn)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 {
  //創(chuàng)建一個(gè)RDD
  def createRDD(): RDD[Integer] = new RDD[Integer](Seq(1, 2, 3))

}

二、簡(jiǎn)單實(shí)現(xiàn)java版本的RDD和SparkContext

//這個(gè)時(shí)java中的一個(gè)接口
//我們可以將scala中的map需要的函數(shù)其實(shí)就是對(duì)應(yīng)著java中的一個(gè)接口
package com.twq.javaapi.java7.function;
public interface Function<T1, R> extends Serializable {
  R call(T1 v1) throws Exception;
}

//這邊實(shí)現(xiàn)的java版的RDD和SparkContext其實(shí)還是用scala代碼實(shí)現(xiàn),只不過(guò)這些scala代碼可以被java代碼調(diào)用了
import java.util.{Iterator => JIterator}
import scala.collection.JavaConverters._
import com.twq.javaapi.java7.function.{Function => JFunction}
//每一個(gè)JavaRDD都會(huì)含有一個(gè)scala的RDD,用于調(diào)用該RDD的api
class JavaRDD[T](val rdd: RDD[T]) {

  def map[R](f: JFunction[T, R]): JavaRDD[R] =
    //這里是關(guān)鍵,調(diào)用scala RDD中的map方法
    //我們將java的接口構(gòu)造成scala RDD的map需要的函數(shù)函數(shù)
    new JavaRDD(rdd.map(x => f.call(x)))
  //我們需要將scala的Iterator轉(zhuǎn)成java版的Iterator
  def iterator: JIterator[T] = rdd.iterator.asJava

}

//每個(gè)JavaSparkContext含有一個(gè)scala版本的SparkContext
class JavaSparkContext(sc: SparkContext) {
  def this() = this(new SparkContext())
  //轉(zhuǎn)調(diào)scala版本的SparkContext來(lái)實(shí)現(xiàn)JavaSparkContext的功能
  def createRDD(): JavaRDD[Integer] = new JavaRDD[Integer](sc.createRDD())
}

三、寫(xiě)java代碼調(diào)用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();
        //調(diào)用JavaSparkContext的api創(chuàng)建一個(gè)RDD
        JavaRDD<Integer> firstRDD = jsc.createRDD();
        //對(duì)創(chuàng)建好的firstRDD應(yīng)用JavaRDD中的map操作
        JavaRDD<String> strRDD = firstRDD.map(new Function<Integer, String>() {
            @Override
            public String call(Integer v1) throws Exception {
                return v1 + "test";
            }
        });
        //將得到的RDD的結(jié)果打印,結(jié)果為
        //1test
        //2test
        //3test
        Iterator<String> result = strRDD.iterator();
        while (result.hasNext()) {
            System.out.println(result.next());
        }
    }
}

以上就是RDD java api調(diào)用scala api的實(shí)現(xiàn)原理,雖然只舉了map操作,但是其他的類似于flatMap操作的實(shí)現(xiàn)都是類似的

接下來(lái)可以詳細(xì)了解RDD java的每一個(gè)api

我們可以參考spark core RDD api來(lái)詳細(xì)理解scala中的每一個(gè)api。。。

系統(tǒng)學(xué)習(xí)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內(nèi)功修煉系列專題: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

分享文章:spark2.x由淺入深深到底系列六之RDDjavaapi調(diào)用scalaapi的原理
本文路徑:http://aaarwkj.com/article40/gpgjeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站改版、Google、全網(wǎng)營(yíng)銷推廣、用戶體驗(yàn)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
99热在线精品国产观看| 成人黄片免费在线播放| 高清免费国产日日操夜夜草| 亚洲av无毛在线观看| 精品人妻区二区三区蜜桃| 人人妻夜夜天天俺去添噜| 日本成人大片在线观看| 国产午夜视频成人无遮挡| 国产三级精品三级专区| 91精品手机在线观看| 不卡一区二区黄色av| 成人免费在线观看午夜| 中文字幕色视频在线观看| 日本91大神在线观看| 五月综合丁香婷婷久久| 日韩中文在线中文网三级| 国产精品久久久99| 欧美日韩亚洲国产精品视频| 亚洲av永久精品一区二区三区| 国产av自拍在线免费观看| 在线播放欧美视频91| 日韩一区二区三区无吗电影| 中文字幕人妻丝袜二区| 热久久这里只有精品视频| 亚洲国产精品日韩专区av有中文 | 亚洲高清成人在线观看| 日本日本熟妇在线视频| 色婷婷一区二区三区影片| 国产日韩精品激情另类综合| 啪啪视频日韩一区二区| 在线一区二区三区成人观看| 亚洲欧美极品一区色婷婷| 亚洲av粉色一区二区三区| 亚洲风情亚av在线播放| 日本一区二区三区日本| 2018在线不卡爱视频| 乱色精品熟女一区二区三区| 深夜视频在线观看成人| 四虎永久播放地址免费| 日韩av毛片在线观看| 成人午夜在线免费观看|