PySpark入门九:飞行数据案例

tech2024-12-04  9

飞行数据案例

此案例主要是为了熟悉dataframe的基础操作以及SQL语句的再熟悉,此案例的所有数据都可以从这里获得。 话不多说,直接上代码

# 导包 from pyspark import SparkContext from pyspark.sql.session import SparkSession # 构造spark连接 sc = SparkContext.getOrCreate() spark = SparkSession(sc) # 加载数据--从文件 flightPath = './learningPySpark-master/Data/departuredelays.csv' airPortPath = './learningPySpark-master/Data/airport-codes-na.txt' # 获得机场数据 airport = spark.read.csv(airPortPath, header='true', inferSchema='true', sep='\t') airport.createOrReplaceTempView('airport') # 这里值得注意的是 使用read.csv方法加载的txt文本文件: # 是因为txt文件的格式中,就是以'\t'分割的,标准格式化数据 # 获得起飞延迟数据 flightPerf = spark.read.csv(flightPath, header='true') flightPerf.createOrReplaceTempView('flightPerf') # 数据存入缓存,方便加快查询速度 flightPerf.cache()

现在数据都加载齐全了,我们的需求是:通过城市和起飞代码查看华盛顿航班延误总数 那我们先show一眼两个表都有大概哪些字段的数据

airport.show(5)

flightPerf.show(5)

看到这里,就大概明白了,这是一个两个表的关联操作,而唯一可以获取到关联关系的是的airport中的IATA和flightPerf中的origin

需求实现

ywDf = spark.sql('select a.city, flightPerf.origin, sum(flightPerf.delay) as Delays from flightPerf join airport a on a.IATA = flightPerf.origin where a.State = "WA" group by a.City, flightPerf.origin order by sum(flightPerf.delay) desc') # 这句SQL看起来较长,但是拆开来看就比较简单了 xxx from flightPerf join airport a on a.IATA = flightPerf.origin xxx # 通过a.IATA 和 flightPerf.origin 构建了两表的连接关系,并给airport取别名a where a.State = "WA" group by a.City, flightPerf.origin # 筛选州为华盛顿州并对城市和origin分组 order by sum(flightPerf.delay) desc # 对flightPerf.delay倒叙排列

输出结果

ywDf.show()

当然了 如果是对数据可视化感兴趣的小伙伴,可以去把数据通过图形更加直观的展示出来,明天学习如何用PySpark进行数据清洗

最新回复(0)