数据清洗_数据转换|学习笔记

简介: 快速学习数据清洗_数据转换

开发者学堂课程【大数据 Spark2020版(知识精讲与实战演练)第四阶段数据清洗_数据转换】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/691/detail/12112


数据清洗_数据转换


数据转换

数据处理做具体数据转换

License 是字符串类型,pickUpTime 与 dropUpTime 是时间类型,使用一个方法处理时间类型的数据

parseTime 中接收一个 RichRow 的分装,处理的时间类型是哪一个字段,返回 long 类型,时间转成时间戳

def parseTime(row:RichRow,field:String):Long={

pickUpX,pickUpY,dropOffX,dropOffY 是 Double 类型,对 Double 类型的处理称为 parseLocation,在 parseLocation 中为了把字符串表示的 Dubbo 转为真的 Double,接收的是 Richrow,parseLocation 明确转换的字段,返回的类型是 Double

Def parseLocation(row:RichRow,field:String):Double={

在 pickUpTime,调用 parseTime,将 RichRow 传入,字段为 field=pickup_datatime,dropOffTime 字段为 field=dropOffTime_datatime,pickUpX转换调用 parseLocation,传入 RichRow,字段名为field=pickup_longitude,pickUpY 字段名为field=pickup_latitude,dropOffX 字段名为 field=dropOff_longitude,dropOffY 字段名为field=dropOff_latitude

def parse( row : Row) : Trip = {

val richRow = new RichRow(row)

val license = richRow.getAs[string]( field = "hack_license" ).orNull

val pickupTime = parseTime(richRow,field = "pickup_datetime")

val dropoffTime = parseTime(richRow,field = "dropoff_datetime")

val pickupX = parseLocation(richRow,field = "pickup_longitude")

val pickupY = parseLocation(richRow,field = "pickup_latitude"")

val dropoffX = parseLocation(richRow,field = "dropoff_longitude")

val dropoffY = parselocation(richRow,field = "dropoff_longitude")

Trip(license,pickupTime,dropoffTime,pickupX,pickupY,dropoffX,dropoffY)

}

处理完后,trip 就有了,parse 在 map 算子中对所有的 row 转成 trip 类型的数据。

获取时间类型的 data 对象,第一步表示时间类型的格式,使用 SimpleDataFormat 进行相应的转换,时间类型传入 formatter,获取时间更精准通过 Locale.ENFLISH,是一个英国的时区,也可以是其他的本地时间第二部执行转换,获取 Data 对象,getTime 获取时间戳,从 row 中取出对应的字符串转成 Data 类型,通过 formatter 进行转化,通过 row.gwtAs(field)获取 row,是一个 String 类型,time 本质是一个 option 对象,

处理 time 中 option 的 string 转成 Data,需要 time.map(),map 是 option 中的 map,拿到一个 time,用 formatter parse time 字符串,getTime,返回一个 long 型,成功的将 option 中所存放的数据中转成 long 型。

数据集中需要将2013-01-01时间类型转成long型,需要找一个工具将时间类型读出来,

image.png

@inline final def map[B](f: A =>B): option[ B]=

if (isEmpty ) None else some(f(this.get))

Map 算法中首先判断是否为空,是空表示 option 没有内容,直接返回 None,否则,返回 some。在 some 算子中会调用 f,传进的函数f,只有当 option 中有数据时才会被调用

option 中的 map 算子使用是较为常见的,option 中有一个 map 算子,map 算子传进一个函数,函数只有在 option 中有值的时候会被调用,返回 some 是会被调用,

如果 option 中没有值,函数不会被调用 time 经过 option 会转为 timeOption, timeOption 与前面 ime Option 不同,前面是一个 string 类型,后面则是 long 类型,option 中有值,转成对应的类型,最终没有值在 parseTime 返回0

def parseTime(row: RichRow,field: string):Long = {

//1.表示出来时问类型的格式 simpleDateFormat

val pattern = "yyyy-MM-dd HH:mm:ss"

val formatter = new simpleDateFormat(pattern,Locale.ENGLISH)

//2.执行转换,获取 Date 对象,getTime 获取时间戳

val time: option[string] = row.getAs [String](field)

val timeoption: option[Long] = time.map(time = formatter.parse(time).getTime )timeoption.getorElse(0L)

Parselocation 第一步获取数据,第二部转换数据。

location 通过 row.getAs 获取,getAs 获取是一个 string 类型,传入 field,对location 进行转换,通过 map 算子转换,将 loc 转成其他类型

def parseLocation(row: RichRow,field: string): Double = {

//1.获取数据

val location = row.getAs[ string](field)

// 2.转换数据

val locationoption = location.map( loc=>loc.toDouble )locationoption.getorElse(0.0D)

完成转换逻辑,理解对应 option 的处理

Option 代表某个方法有可能为空,使得方法调用必须处理 null 的情况,option 对象本身提供对于 null 的支持

相关文章
|
6月前
|
数据采集 数据可视化 数据挖掘
数据清洗有什么方式
数据清洗有什么方式
|
16天前
|
数据采集 数据可视化 Python
改进分析的五种鲜为人知的数据转换技术
改进分析的五种鲜为人知的数据转换技术
|
2月前
|
数据采集 数据可视化 数据挖掘
如何进行有效的数据清洗?
如何进行有效的数据清洗?
103 3
|
2月前
|
数据采集 存储 数据可视化
数据清洗
数据清洗
69 1
|
6月前
|
数据采集 数据挖掘 大数据
数据处理利器:使用Pandas进行数据清洗与转换
【4月更文挑战第12天】在大数据时代,Pandas是Python数据分析的关键工具,提供高效的数据清洗和转换功能。本文介绍了如何使用Pandas处理缺失值(删除或填充)、异常值(Z-Score法和IQR法)以及重复值(检测和删除)。此外,还涵盖了数据转换,包括数据类型转换、数据标准化(Min-Max和Z-Score)以及类别数据的one-hot编码。通过学习这些方法,可以为数据分析和挖掘奠定坚实基础。
173 0
|
5月前
|
数据采集 存储 数据可视化
Pandas高级教程:数据清洗、转换与分析
Pandas是Python的数据分析库,提供Series和DataFrame数据结构及数据分析工具,便于数据清洗、转换和分析。本教程涵盖Pandas在数据清洗(如缺失值、重复值和异常值处理)、转换(数据类型转换和重塑)和分析(如描述性统计、分组聚合和可视化)的应用。通过学习Pandas,用户能更高效地处理和理解数据,为数据分析任务打下基础。
604 3
|
6月前
|
数据采集 监控 数据挖掘
提高数据清洗效果的关键
【4月更文挑战第2天】提高数据清洗效果的关键
50 2
|
6月前
|
数据采集 Python
数据清洗是数据预处理的重要步骤
数据清洗是数据预处理的重要步骤
77 0
|
数据采集 SQL 数据挖掘
数据清洗_剪除反常数据|学习笔记
快速学习数据清洗_剪除反常数据
138 0
数据清洗_剪除反常数据|学习笔记
|
算法 数据挖掘 开发者
数据转换| 学习笔记
快速学习数据转换。
数据转换| 学习笔记