1. 程式人生 > >病人記錄Spark處理

病人記錄Spark處理

資料集包含百萬對病人的記錄:

 下載記錄---【http://bit.ly/1Aoywaq】-需要翻牆才可以下載

解壓檔案:
unzip donation.zip
繼續解壓檔案:
unzip 'block_*.zip'
建立資料夾:
hdfs dfs -mkdir /bigdata/cz/input/linkage
上傳檔案:
hdfs dfs -put block_*.csv /bigdata/cz/input/linkage/

開始spark對其進行操作:

hdfs資料儲存位置:

  

spark程式碼:

//拿到檔案
var blocks = sc.textFile("/bigdata/cz/input/linkage")
//先取1個值看一下資料狀態
val head = blocks.take(10)
//資料格式
//Array("id_1","id_2","cmp_fname_c1","cmp_fname_c2","cmp_lname_c1","cmp_lname_c2","cmp_sex","cmp_bd","cmp_bm","cmp_by","cmp_plz","is_match")

定義一個方法,測試是否出現“id_1”字串序列,等號後面是函式體的內容

def isHeader(line:String):Boolean={
      line.contains("id_1")
     }
//呼叫函式,呼叫過濾器
head.filter(isHeader).foreach(println)
//得到資料
//"id_1","id_2","cmp_fname_c1","cmp_fname_c2","cmp_lname_c1","cmp_lname_c2","cmp_sex","cmp_bd","cmp_bm","cmp_by","cmp_plz","is_match"

//呼叫函式,呼叫非過濾器
head.filterNot(isHeader).foreach(println)
//得到資料
/*
39086,47614,1,?,1,?,1,1,1,1,1,TRUE
70031,70237,1,?,1,?,1,1,1,1,1,TRUE
84795,97439,1,?,1,?,1,1,1,1,1,TRUE
36950,42116,1,?,1,1,1,1,1,1,1,TRUE
42413,48491,1,?,1,?,1,1,1,1,1,TRUE
25965,64753,1,?,1,?,1,1,1,1,1,TRUE
49451,90407,1,?,1,?,1,1,1,1,0,TRUE
39932,40902,1,?,1,?,1,1,1,1,1,TRUE
*/

spark的強大之處來自於它的血統繼承,它可以不用離開sparkShell就可以對整個資料集進行操作,先可以拿到小的資料集進行操作,之後再拿到大量的資料集進行處理。