病人記錄Spark處理
阿新 • • 發佈:2018-11-28
資料集包含百萬對病人的記錄:
下載記錄---【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就可以對整個資料集進行操作,先可以拿到小的資料集進行操作,之後再拿到大量的資料集進行處理。