1. 程式人生 > >培訓系列11-spark dataframe 基礎操作

培訓系列11-spark dataframe 基礎操作

// dataframe is the topic

一、獲得基礎資料。先通過rdd的方式獲得資料

val ny= sc.textFile("data/new_york/")
val header=ny.first
val filterNY =ny.filter(listing=>{
listing.split(",").size==14 && listing!=header
})

//因為後面多是按照表格的形式來處理dataframe,所以這裡增加一個size==14的限制非常有必要。要求資料整齊劃一。
val nyMap= filterNY.map(listing=>{
val listingInfo=listing.split(",")
(listingInfo(0).toInt,listingInfo(2),listingInfo(9).toFloat,listingInfo(4))

})

//這裡的map並沒有採用key val的形式,而是四個欄位並列的map格式,這種形式更加適合後面轉換成dataframe,原來key value的形式,主要在groupbykey,countbykey,reducebykey的rdd操作的時候才有用。
nyMap.take(20).foreach(println)

二、把rdd轉化成dataframe

val nyDF=nyMap.toDF("Room_ID","Room_Type","Price","Neighborhood")

//轉化的關鍵步驟

三、dataframe上的關鍵常用操作

nyDF.show
//default it will be show 20 rows .But you can specificate row number.eg
nyDF.show(40)

//show函式可以指定行數。
nyDF.select("Room_ID","Room_Type","Price").show
//you can also specificate a row to select a special column.
val countsDF= nyDF.filter("Price< 100.0").groupBy("Room_Type").count()