// 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()
原文:https://www.cnblogs.com/davidzhu/p/10095686.html