亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java-spark中各種常用算子的寫法示例

2024-07-14 08:41:18
字體:
來源:轉載
供稿:網友

Spark的算子的分類

從大方向來說,Spark 算子大致可以分為以下兩類:

1)Transformation 變換/轉換算子:這種變換并不觸發提交作業,完成作業中間過程處理。

Transformation 操作是延遲計算的,也就是說從一個RDD 轉換生成另一個 RDD 的轉換操作不是馬上執行,需要等到有 Action 操作的時候才會真正觸發運算。

2)Action 行動算子:這類算子會觸發 SparkContext 提交 Job 作業。

Action 算子會觸發 Spark 提交作業(Job),并將數據輸出 Spark系統。

從小方向來說,Spark 算子大致可以分為以下三類:

1)Value數據類型的Transformation算子,這種變換并不觸發提交作業,針對處理的數據項是Value型的數據。

2)Key-Value數據類型的Transfromation算子,這種變換并不觸發提交作業,針對處理的數據項是Key-Value型的數據對。

3)Action算子,這類算子會觸發SparkContext提交Job作業。

引言

通常寫spark的程序用scala比較方便,畢竟spark的源碼就是用scala寫的。然而,目前java開發者特別多,尤其進行數據對接、上線服務的時候,這時候,就需要掌握一些spark在java中的使用方法了

一、map

map在進行數據處理、轉換的時候,不能更常用了

在使用map之前 首先要定義一個轉換的函數 格式如下:

Function<String, LabeledPoint> transForm = new Function<String, LabeledPoint>() {//String是某一行的輸入類型 LabeledPoint是轉換后的輸出類型 @Override public LabeledPoint call(String row) throws Exception {//重寫call方法 String[] rowArr = row.split(","); int rowSize = rowArr.length;  double[] doubleArr = new double[rowSize-1];  //除了第一位的lable外 其余的部分解析成double 然后放到數組中 for (int i = 1; i < rowSize; i++) {  String each = rowArr[i];  doubleArr[i] = Double.parseDouble(each); }  //用剛才得到的數據 轉成向量 Vector feature = Vectors.dense(doubleArr); double label = Double.parseDouble(rowArr[0]); //構造用于分類訓練的數據格式 LabelPoint LabeledPoint point = new LabeledPoint(label, feature); return point; } };

需要特別注意的是:

1、call方法的輸入應該是轉換之前的數據行的類型  返回值應是處理之后的數據行類型

2、如果轉換方法中調用了自定義的類,注意該類名必須實現序列化 比如

public class TreeEnsemble implements Serializable {}

3、轉換函數中如果調用了某些類的對象,比如該方法需要調用外部的一個參數,或者數值處理模型(標準化,歸一化等),則該對象需要聲明是final

然后就是在合適的時候調用該轉換函數了

JavaRDD<LabeledPoint> rdd = oriData.toJavaRDD().map(transForm);

這種方式是需要將普通的rdd轉成javaRDD才能使用的,轉成javaRDD的這一步操作不耗時,不用擔心

二、filter

在避免數據出現空值、0等場景中也非常常用,可以滿足sql中where的功能

這里首先也是要定義一個函數,該函數給定數據行 返回布爾值 實際效果是將返回為true的數據保留

Function<String, Boolean> boolFilter = new Function<String, Boolean>() {//String是某一行的輸入類型 Boolean是對應的輸出類型 用于判斷數據是否保留 @Override public Boolean call(String row) throws Exception {//重寫call方法 boolean flag = row!=null; return flag; } };

通常該函數實際使用中需要修改的僅僅是row的類型 也就是數據行的輸入類型,和上面的轉換函數不同,此call方法的返回值應是固定為Boolean

然后是調用方式

JavaRDD<LabeledPoint> rdd = oriData.toJavaRDD().filter(boolFilter);

三、mapToPair

該方法和map方法有一些類似,也是對數據進行一些轉換。不過此函數輸入一行 輸出的是一個元組,最常用的方法是用來做交叉驗證 或者統計錯誤率 召回率 計算AUC等等

同樣,需要先定義一個轉換函數

Function<String, Boolean> transformer = new PairFunction<LabeledPoint, Object, Object>() {//LabeledPoint是輸入類型 后面的兩個Object不要改動 @Override public Tuple2 call(LabeledPoint row) throws Exception {//重寫call方法 通常只改動輸入參數 輸出不要改動 double predicton = thismodel.predict(row.features()); double label = row.label(); return new Tuple2(predicton, label); } });

關于調用的類、類的對象,要求和之前的一致,類需要實現序列化,類的對象需要聲明成final類型

相應的調用如下:

JavaPairRDD<Object, Object> predictionsAndLabels = oriData.mapToPair(transformer);

然后對該predictionsAndLabels的使用,計算準確率、召回率、精準率、AUC,接下來的博客中會有,敬請期待

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久激情视频久久| 97人洗澡人人免费公开视频碰碰碰| 国产精品第一第二| 久久久极品av| 亚洲精品美女久久久| 国产精品网站大全| 日韩美女主播视频| 欧美香蕉大胸在线视频观看| 久久这里有精品| 国产精品久久久久国产a级| 91免费人成网站在线观看18| 中文字幕日韩欧美精品在线观看| 欧美在线中文字幕| 久久精品99国产精品酒店日本| 亚洲精品日韩激情在线电影| 欧美激情免费在线| 成人性生交xxxxx网站| 久久久人成影片一区二区三区| 亚洲精品美女视频| 色悠悠久久久久| 久久久伊人日本| 欧美韩日一区二区| 久久久99免费视频| 91精品国产99久久久久久| 日本国产一区二区三区| 欧美国产一区二区三区| 欧美香蕉大胸在线视频观看| 亚洲自拍偷拍色片视频| 国产亚洲精品一区二区| 久久精品国产一区二区电影| 成人免费视频97| 欧美日韩亚洲国产一区| 国产情人节一区| 国产精品久久久久国产a级| 国产一区av在线| 亚洲激情在线视频| 俺去了亚洲欧美日韩| 性欧美视频videos6一9| 欧美电影在线播放| 亚洲国产精品成人va在线观看| 亚洲国产精彩中文乱码av在线播放| 欧美高清自拍一区| 不用播放器成人网| 奇米4444一区二区三区| 91视频国产高清| 91中文精品字幕在线视频| 国产精品免费久久久| 欧美性猛交xxxx富婆弯腰| 日韩中文字幕在线免费观看| 午夜精品国产精品大乳美女| 国产一区二区精品丝袜| 欧美激情视频在线免费观看 欧美视频免费一| 浅井舞香一区二区| 91经典在线视频| 91午夜在线播放| 日本成人免费在线| 国产亚洲a∨片在线观看| 精品久久久久久久中文字幕| 日韩av一区在线观看| 91系列在线播放| 欧美国产亚洲精品久久久8v| 91在线国产电影| 久久国产天堂福利天堂| 亚洲综合大片69999| 亚洲欧洲日韩国产| 欧美激情在线狂野欧美精品| 亚洲综合色激情五月| 国产成人在线一区| 欧美成人激情视频| 伊人久久久久久久久久| 欧美成人网在线| 国产精品美乳一区二区免费| 久久999免费视频| 成人国内精品久久久久一区| 97久久伊人激情网| 26uuu国产精品视频| 国产精品入口福利| 午夜精品久久久久久久99黑人| 日韩美女中文字幕| 欧美日韩亚洲一区二| 国产欧美一区二区三区视频| 日韩av电影手机在线| 在线视频日本亚洲性| 国产精选久久久久久| 久99九色视频在线观看| 久久综合免费视频影院| 欧美日韩一区二区免费在线观看| 丝袜美腿精品国产二区| 欧美日韩国产中文字幕| 日韩在线视频一区| 在线亚洲男人天堂| 欧美一区二区三区艳史| 国产精品久久久久久久久久久久| 国产精品99久久久久久白浆小说| 日韩电影免费在线观看中文字幕| 日韩av影视在线| 色偷偷88888欧美精品久久久| 亚洲天堂网在线观看| 色综合91久久精品中文字幕| 91高潮精品免费porn| 国产欧美日韩专区发布| 久久久亚洲精选| 久久久久久网站| 亚洲第一页自拍| 精品久久久中文| 精品亚洲夜色av98在线观看| 国产91精品久久久| 91久久久久久久久| 欧美一级淫片videoshd| 国产欧美一区二区三区在线看| 国产亚洲免费的视频看| 日韩美女视频中文字幕| 一个人看的www久久| 欧美激情精品久久久| 亚洲欧洲一区二区三区在线观看| 日韩欧美在线中文字幕| 日韩高清免费观看| 亚洲视频精品在线| 精品国内产的精品视频在线观看| 免费97视频在线精品国自产拍| 日韩av在线一区| 日韩国产中文字幕| 国产在线久久久| 成人在线国产精品| 日本精品中文字幕| 91免费的视频在线播放| 日韩欧美黄色动漫| 精品中文字幕在线| 日韩电影免费在线观看| 国产精品69精品一区二区三区| 国产91精品黑色丝袜高跟鞋| 国产国产精品人在线视| 亚洲欧美另类国产| 久久在线观看视频| 中文字幕亚洲天堂| 国产精品最新在线观看| 另类色图亚洲色图| 久久久国产精品一区| 久久久久久尹人网香蕉| 国外成人性视频| 国产精品久久久999| 国产成人福利网站| 欧美成人免费视频| 日韩有码视频在线| 中文欧美日本在线资源| 91国内精品久久| 日韩va亚洲va欧洲va国产| 亚洲国产日韩精品在线| 久久影院在线观看| 日韩视频免费在线观看| 色999日韩欧美国产| 中文字幕亚洲综合久久| 国产欧美在线视频| 亚洲精品网站在线播放gif| 亚洲精品有码在线| 亚洲欧美日韩精品久久奇米色影视| 91香蕉嫩草影院入口| 欧美孕妇孕交黑巨大网站| 精品日韩视频在线观看| 日韩精品极品视频免费观看| 日韩国产中文字幕| 国产精品免费小视频| 亚洲欧美一区二区三区四区| 91九色视频在线|