开发者学堂课程【大数据 Spark2020版(知识精讲与实战演练)第四阶段:数据清洗_创建 Trip 类】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/691/detail/12110
数据清洗_创建 Trip 类
创建 Trip 类
数据清洗,步骤一创建样例类来表示数据,步骤二将 Row 转成 Trip 样例类,步骤三数据处理,即转换规则,步骤四异常处理。
创建样例类,样例类不能直接放在 TaxiAnalysisRunner 对象中,应当放在外侧,即case class Trip(
Trip 中的内容首先查看数据集中有什么、思考数据集中的数据哪些可以用到,此时可以创建 Trip
一个 Trip 代表数据集中的一行数据
写入 license 执照号,pickUpTime 上车时间,dropOffTime 下车时间,上下车经纬度
case class Trip(
license: string,
pickupTime: Long,
dropoffTime: Long,
pickupx: Double,
pickupY: Double,
dropoffx: Double,
dropoffY: Double
)
object TaxiAnalysisRunner {
是主类
def main (args : Array [String] ): Unit = {
主类中有一个 main 方法,数据读取完后打印的代码注释掉,注释后进行具体的转换工作
object TaxiAnalysisRunner {
def main (args : Array [String] ): Unit = {
//1.创建 SparkSession
val spark = SparkSession . builder()
.master ( "local[6]")
.appName( "taxi")
.getorCreate( )
//2.导入函数和隐式转换
import spark.implicits._
import org.apache.spark.sql.functions._
//3.读取文件
val taxiRaw =DataFram[Row] spark.read
.option ( "header" , value = true)
.csv ( "dataset/half_trip.csv")
//taxiRaw.show ( )
//taxiRaw. printSchema ( )
读取的 taxiRaw 是 DataFrame 运行,里面存放的是 Row,需要让 Dataset 存放 Trip,数据类型是 DataFrame,本质上是 Dataset
val taxiRaw =Dataset[Row] spark.read
将 Row 转成 Trip 类型,rdd 不考虑存放的类型
//4.转换操作
taxiRaw.rdd.map(row=>trip)
}
在 main 方法外面创建一个方法 parse,parse 中接收 row 类型的对象,返回 trip 类型对象
def parse(row:Row): Unit={
trip
}
直接接收 parse 转换方法
//4.转换操作
taxiRaw.rdd.map(parse)
}
Parse 传下来时自动被转为函数,是 scala 中的一个优化,在转成函数时,函数接收一个 row 类型的对象,返回一个 trip 类型的对象,Unit 改为 Trip
def parse(row:Row):Trip={
总结:两个方面一个是创建对象与创建转换方法,另一个写出 map 方法。
