type
status
date
slug
summary
tags
category
icon
password
BackFlow.scala
首先,它定义了一个SparkSession,并导入了一些必要的Spark SQL函数。然后,它定义了一个schema,用于读取CSV文件中的数据。数据被读入后,进行了一些预处理,包括将进场时间和离场时间转换为timestamp类型,并提取出离场的小时和月份。
然后,它定义了一个名为
exitTrafficAnalysis
的函数,该函数接收一个DataFrame作为参数,进行离场车流量的分析。首先,它按小时统计了离场车流量,并找出了每个车场的日高峰和低峰。然后,它按月统计了离场车流量,并找出了每个车场的月高峰和低峰。最后,它将分析结果写入到MySQL数据库中。这里涉及到两个表:
daily_exit_traffic_peaks
和monthly_exit_traffic_peaks
。daily_exit_traffic_peaks
表的构成如下:ParkingLot
:停车场名称
DailyExitPeak
:每天的离场高峰车流量
DailyExitPeakHour
:每天离场高峰的小时
DailyExitLow
:每天的离场低峰车流量
DailyExitLowHour
:每天离场低峰的小时
monthly_exit_traffic_peaks
表的构成如下:ParkingLot
:停车场名称
MonthlyExitPeak
:每月的离场高峰车流量
MonthlyExitPeakMonth
:离场高峰的月份
MonthlyExitLow
:每月的离场低峰车流量
MonthlyExitLowMonth
:离场低峰的月份
这些表格的数据可以帮助停车场管理者了解车场的使用情况,以便进行更好的管理和规划。
ParkName.scala
首先,它定义了一个SparkSession,并导入了一些必要的Spark SQL函数。然后,它定义了一个schema,用于读取CSV文件中的数据。数据被读入后,创建了一个名为"parking"的临时视图。
然后,它使用SQL查询从"parking"视图中选择所有不重复的停车场名称,并将结果赋值给
park_name
。这个park_name
是一个DataFrame,它只有一列,列名为"park_name",包含了所有不重复的停车场名称。接下来,它定义了MySQL数据库的URL和表名,以及用于连接数据库的用户名和密码。然后,它将
park_name
DataFrame的内容以覆盖模式写入到MySQL数据库的"park_name"表中。最后,它打印出了一条消息,表示停车场名称已经写入到数据库中,并显示了所有的停车场名称。然后,它停止了SparkSession。
park_name
表的构成如下:- park_name:停车场名称,这是唯一的,不重复的。
这个表可以帮助我们了解有哪些停车场,以便进行进一步的分析和管理。
Prices.scala
它主要用于从CSV文件中读取停车场的数据,并进行一系列的统计分析,包括统计应收金额为0的数据,统计数据总数,统计每个车场每年产生的停车记录,其中有费用的订单数量,总的金额,收回的金额,以及收回金额占应收金额的百分比。最后,它将这些分析结果写入到MySQL数据库中。
首先,它定义了一个SparkSession,并导入了一些必要的Spark SQL函数。然后,它定义了一个schema,用于读取CSV文件中的数据。数据被读入后,创建了一个名为"parking"的临时视图。
然后,它使用SQL查询进行了一系列的统计分析,并将结果赋值给相应的变量。这些统计分析包括统计应收金额为0的数据,统计数据总数,统计每个车场每年产生的停车记录,其中有费用的订单数量,总的金额,收回的金额,以及收回金额占应收金额的百分比。
接下来,它定义了MySQL数据库的URL和表名,以及用于连接数据库的用户名和密码。然后,它将分析结果以覆盖模式写入到MySQL数据库的相应表中。
最后,它打印出了一条消息,表示程序运行时间,并停止了SparkSession。
all_parking_fee_statistics
表的构成如下:- total:数据总数
- has_fee:有费用的订单数量
- total_amount:订单总金额
- received_amount:已收金额总额
- percentage:收回金额占应收金额的百分比
这个表可以帮助我们了解所有车场的费用统计情况,以便进行进一步的分析和管理。
Task2.scala
这段代码是用Scala编写的,使用Apache Spark进行数据处理和分析。它主要用于从CSV文件中读取停车场的数据,并进行一系列的统计分析,包括车流量统计和停车时长统计。最后,它将这些分析结果写入到MySQL数据库中。
首先,它定义了一个SparkSession,并导入了一些必要的Spark SQL函数。然后,它定义了一个schema,用于读取CSV文件中的数据。数据被读入后,进行了一些预处理,包括将进场时间和离场时间转换为timestamp类型,并计算了停车时长。
然后,它定义了两个函数:
trafficAnalysis
和durationAnalysis
。trafficAnalysis
函数用于进行车流量统计,包括按小时统计车流量,找出每个车场的日高峰和低峰,按月统计车流量,找出每个车场的月高峰和低峰。durationAnalysis
函数用于进行停车时长统计,包括定义免费时间段和收费时间段,按时间段统计平均停车时长,最短停车时长和最长停车时长。最后,它将分析结果写入到MySQL数据库中。这里涉及到三个表:
daily_traffic_peaks
,monthly_traffic_peaks
和duration_statistics
。daily_traffic_peaks
表的构成如下:- ParkingLot:停车场名称
- DailyPeak:每天的车流量高峰
- DailyPeakHour:每天车流量高峰的小时
- DailyLow:每天的车流量低峰
- DailyLowHour:每天车流量低峰的小时
monthly_traffic_peaks
表的构成如下:- ParkingLot:停车场名称
- MonthlyPeak:每月的车流量高峰
- MonthlyPeakMonth:车流量高峰的月份
- MonthlyLow:每月的车流量低峰
- MonthlyLowMonth:车流量低峰的月份
duration_statistics
表的构成如下:- ParkingLot:停车场名称
- TimePeriod:时间段,包括免费时间段和收费时间段
- AverageDuration:平均停车时长
- ShortestDuration:最短停车时长
- LongestDuration:最长停车时长
这些表格的数据可以帮助停车场管理者了解车场的使用情况,以便进行更好的管理和规划。
trafficeFlowEveryDay.scala
这段代码是用Scala编写的,使用Apache Spark进行数据处理和分析。它主要用于从CSV文件中读取停车场的数据,并进行一系列的统计分析,包括每个停车场每天每小时的订单数量。最后,它将这些分析结果写入到MySQL数据库中。
首先,它定义了一个SparkSession,并导入了一些必要的Spark SQL函数。然后,它定义了一个schema,用于读取CSV文件中的数据。数据被读入后,进行了一些预处理,包括将进场时间转换为timestamp类型,并提取出月份,日期和小时。
然后,它对数据进行了聚合操作,按照停车场名称,月份,日期和小时统计了订单数量,并将结果赋值给
dailyOrders
。这个dailyOrders
是一个DataFrame,它包含了每个停车场每天每小时的订单数量。接下来,它定义了MySQL数据库的URL和表名,以及用于连接数据库的用户名和密码。然后,它将
dailyOrders
DataFrame的内容以覆盖模式写入到MySQL数据库的"daily_orders"表中。最后,它打印出了一条消息,表示数据已经成功写入到MySQL数据库,并显示了写入的数据量。然后,它打印出了程序的运行时间,并停止了SparkSession。
daily_orders
表的构成如下:- park_name:停车场名称
- month:月份
- day:日期
- hour:小时
- total:该小时内的订单数量
这个表可以帮助我们了解每个停车场每天每小时的订单数量,以便进行进一步的分析和管理。
TurnoverRate.scala
这段代码是用Scala编写的,使用Apache Spark进行数据处理和分析。它主要用于从CSV文件中读取停车场的数据,并进行一系列的统计分析,包括计算每个停车位每天的停车次数,计算月度和年度的泊位周转率,以及计算每个停车场的平均周转率。最后,它将这些分析结果写入到MySQL数据库中。
首先,它定义了一个SparkSession,并导入了一些必要的Spark SQL函数。然后,它定义了一个schema,用于读取CSV文件中的数据。数据被读入后,进行了一些预处理,包括将进场时间和离场时间转换为timestamp类型,并提取出日期,月份和年份。
然后,它定义了一个函数
calculateTurnoverRate
,用于计算泊位周转率。这个函数首先计算了每个停车位每天的停车次数,然后根据这个结果计算了月度和年度的泊位周转率,以及每个停车场的平均周转率。这些结果被保存在四个DataFrame中:monthlyTurnoverRate
,yearlyTurnoverRate
,monthlyAvgTurnoverRate
和yearlyAvgTurnoverRate
。接下来,它定义了MySQL数据库的URL和表名,以及用于连接数据库的用户名和密码。然后,它将四个DataFrame的内容以覆盖模式写入到MySQL数据库的相应表中。
最后,它打印出了一条消息,表示程序的运行时间,并停止了SparkSession。
monthly_turnover_rate
表的构成如下:- ParkingLot:停车场名称
- ParkingSpace:停车位编号
- Month:月份
- Year:年份
- MonthlyAvgTurnoverRate:月平均泊位周转率
- MonthlyMaxTurnoverRate:月最高泊位周转率
- MonthlyMinTurnoverRate:月最低泊位周转率
yearly_turnover_rate
表的构成如下:- ParkingLot:停车场名称
- ParkingSpace:停车位编号
- Year:年份
- YearlyAvgTurnoverRate:年平均泊位周转率
- YearlyMaxTurnoverRate:年最高泊位周转率
- YearlyMinTurnoverRate:年最低泊位周转率
monthly_avg_turnover_rate
表的构成如下:- ParkingLot:停车场名称
- Year:年份
- Month:月份
- MonthlyAvgTurnoverRate:停车场月平均周转率
- MonthlyMaxTurnoverRate:停车场月最高周转率
- MonthlyMinTurnoverRate:停车场月最低周转率
yearly_avg_turnover_rate
表的构成如下:- ParkingLot:停车场名称
- Year:年份
- YearlyAvgTurnoverRate:停车场年平均周转率
- YearlyMaxTurnoverRate:停车场年最高周转率
- YearlyMinTurnoverRate:停车场年最低周转率
这些表格的数据可以帮助我们了解每个停车场和每个停车位的使用情况,以便进行进一步的分析和管理。
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~