亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

spark處理超大文件方法 spark讀取hdfs文件規(guī)則( 五 )


廢話不多說(shuō) , 直接看下面的代碼片段 。
@Features(Feature.ModelIde)
@Stories(Story.DataSplit)
@Description(“使用pyspark驗(yàn)證隨機(jī)拆分中的分層拆分”)
@Test
public void dataRandomFiledTest(){
String script = “# coding: UTF-8n” +
“# input script according to definition of “run” interfacen” +
“from trailer import loggern” +
“from pyspark import SparkContextn” +
“from pyspark.sql import SQLContextn” +
“n” +
“n” +
“def run(t1, t2, context_string):n” +
” # t2為原始數(shù)據(jù) ,  t1為經(jīng)過(guò)數(shù)據(jù)拆分算子根據(jù)字段分層拆分后的數(shù)據(jù)n” +
” # 由于數(shù)據(jù)拆分是根據(jù)col_20這一列進(jìn)行的分層拆分 ,  所以在這里分別n” +
” # 對(duì)這2份數(shù)據(jù)進(jìn)行分組并統(tǒng)計(jì)每一個(gè)分組的計(jì)數(shù) 。由于這一列是labeln” +
” # 所以其實(shí)只有兩個(gè)分組 , 分別是0和1n” +
” t2_row = t2.groupby(t2.col_20).agg({“*” : “count”}).cache()n” +
” t1_row = t1.groupby(t1.col_20).agg({“*” : “count”}).cache()n” +
” n” +
” n” +
” t2_0 = t2_row.filter(t2_row.col_20 == 1).collect()[0][“count(1)”]n” +
” t2_1 = t2_row.filter(t2_row.col_20 == 0).collect()[0][“count(1)”]n” +
” n” +
” t1_0 = t1_row.filter(t1_row.col_20 == 1).collect()[0][“count(1)”]n” +
” t1_1 = t1_row.filter(t1_row.col_20 == 0).collect()[0][“count(1)”]n” +
” n” +
” # 數(shù)據(jù)拆分算子是根據(jù)字段按照1:1的比例進(jìn)行拆分的 。所以t1和t2的每一個(gè)分組n” +
” # 都應(yīng)該只有原始數(shù)據(jù)量的一半n” +
” if t2_0/2 – t1_0 >1:n” +
” raise Run財(cái)路哥Error(“the 0 class is not splited correctly”)n” +
” n” +
” if t2_1/2 – t1_1 >1:n” +
” raise Run財(cái)路哥Error(“the 1 class is not splited correctly”)n” +
“n” +
” return [t1]”;
我們用來(lái)掃描數(shù)據(jù)表的API仍然是我們之前提到的dataframe 。上面的代碼片段是我們嵌入spark任務(wù)的腳本 。里面t1和t2都是dataframe ,  分別代表原始數(shù)據(jù)和經(jīng)過(guò)數(shù)據(jù)拆分算法拆分后的數(shù)據(jù) 。測(cè)試的功能是分層拆分 。也就是按某一列按比例抽取數(shù)據(jù) 。比如說(shuō)100W行的數(shù)據(jù) , 我按job這個(gè)字段分層拆分 ,  我要求的比例是30% 。也即是說(shuō)每種職業(yè)抽取30%的數(shù)據(jù)出來(lái) , 相當(dāng)于這是一個(gè)數(shù)據(jù)采樣的功能 。OK ,  所以在測(cè)試腳本中 , 我們分別先把原始表和經(jīng)過(guò)采樣的表按這一列進(jìn)行分組操作 ,  也就是groupby(col_20) 。這里我選擇的是按col_20進(jìn)行分層拆分 。根據(jù)剛才講的這樣的分組操作后會(huì)觸發(fā)shuffle , 把有相同職業(yè)的數(shù)據(jù)傳到一個(gè)數(shù)據(jù)分片上 。然后我們做count這種操作統(tǒng)計(jì)每一個(gè)組的行數(shù) 。因?yàn)檫@個(gè)算法我是按1:1拆分的 , 也就是按50%采樣 。所以最后我要驗(yàn)證拆分后的數(shù)據(jù)的每一組的行數(shù)都是原始數(shù)據(jù)中該組的一半 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: