【Spark】(十九)项目实战 — 航班飞行网图分析

本文介绍了一次使用Spark GraphX进行航班飞行网图分析的项目实战,包括统计机场和航线数量、寻找最长航线、最繁忙机场、最重要航线及最便宜航线的方法。数据来源于CSV文件,包含航班各项详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求概述

探索航班飞行网图数据
构建航班飞行网图
使用Spark GraphX完成下列任务

  • 统计航班飞行网图中机场的数量

  • 统计航班飞行网图中航线的数量

  • 计算最长的飞行航线(Point to Point)

  • 找出最繁忙的机场

  • 找出最重要的飞行航线(PageRank)

  • 找出最便宜的飞行航线(SSSP)

数据探索

下载数据
链接: https://pan.baidu.com/share/init?surl=RUTXwr7Nqeg5cp8S8Tp0YA
提取码:gvyd

数据格式

  • 文件格式为CSV,字段之间分隔符为“,”

  • 依次为:#日、周#、航空公司、飞机注册号、航班号、起飞机场编号、起飞机场、到达机场编号、到达机场、预计起飞时间(时分)、起飞时间、起飞延迟(分钟)、到达预计时间、到达时间、到达延迟(分钟)、预计飞行时间、飞行距离
    在这里插入图片描述

项目实战

构建航班飞行网图

  • 创建属性图Graph[VD,ED]

  • 装载CSV为RDD,每个机场作为顶点。关键字段:起飞机场编号、起飞机场、到达机场编号、到达机场、飞行距离

  • 初始化顶点集airports:RDD[(VertexId,String)],顶点属性为机场名称

  • 初始化边集lines:RDD[Edge],边属性为飞行距离

scala> import org.apache.spark.graphx._

scala> val flight = sc.textFile("file:///opt/kb09file/fly.csv").map(x =>x.split(","))
flight: org.apache.spark.rdd.RDD[String] = file:///opt/kb09file/fly.csv MapPartitionsRDD[3] at textFile at <console>:30

scala> flight.count
res1: Long = 439620

// 航班((起飞机场编号,起飞机场),(到达机场编号,到达机场))
scala> val airport = flight.flatMap(x => Array((x(5).toLong,x(6)),(x(7).toLong,x(8)))).distinct
airport
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值