赞
踩
题 目: | 基于Hadoop的飞机航班预测系统设计与实现 |
院 系: | 大数据与人工智能学院 |
专 业: | 数据科学与大数据技术 |
班 级: | 数科201班 |
学 号: | 202001074140 |
学生姓名: | 张健 |
指导教师: | 马义想 |
题 目 | 基于Hadoop+Hive的机票价格预测分析与可视化 | ||||||
姓名 | 张健 | 院系 | 大数据与人工智能学院 | 专业班级 | 数科201 | 学号 | 202001074140 |
1.选题背景和意义 (1)选题背景 在旅行规划中,机票价格一直是旅客关注的重点。机票价格的波动不仅受季节、航线、航空公司等因素的影响,还受到市场供求关系、经济形势等因素的影响。因此,通过对机票价格进行预测分析,可以帮助旅客选择更合适的出行时间和机票购买策略,从而节省旅行成本。 (2)意义 提高乘客购票决策:基于Hadoop的飞机票价格预测能够提供乘客准确的价格预测信息,帮助他们选择合适的购票时间和最优的价格,从而节省成本。 改善航空公司运营管理:航空公司可以准确预测票价趋势和需求变化,从而制定更具竞争力和市场响应性的票价策略。这有助于提高运营效率、增加收益和优化航线安排。 实现可持续发展:航空业是全球排放最高的行业之一。通过预测飞机票价格,并能够更好地安排航班和座位利用率,航空公司可以减少空座位和航班的浪费,从而降低碳排放和资源浪费,实现可持续发展。 推动大数据技术应用:基于Hadoop+Hive的机票价格预测分析与可视化,可以推动大数据技术在航空业的应用和发展。这对于促进航空公司数字化转型,提升数据分析和预测能力具有重要意义。 通过基于Hadoop+Hive的机票价格预测分析与可视化,可以为乘客提供更好的购票体验,为航空公司提供决策支持,促进航空业的可持续发展,并推动大数据技术在航空业的应用。 | |||||||
2.本选题在国内外的研究状况及发展趋势 (1)国内外的发展状况 在国内,随着大数据技术的逐渐普及和应用,基于Hadoop+Hive的机票价格预测分析与可视化的研究日益受到重视。一些研究者通过收集和处理大规模的机票价格数据,利用Hadoop+Hive进行机票价格分析和预测。例如,可以通过Hive进行机票价格数据的清洗、聚合和转换,再利用Hadoop进行机票价格模型的建立和预测。同时,也有研究者将预测结果进行可视化展示,使用图表、地图等方式呈现机票价格的变化趋势和规律。 在国外,基于Hadoop+Hive的机票价格预测分析与可视化的研究也取得了一定的进展。一些研究机构和航空公司利用大数据技术进行机票价格分析和预测,并取得了一些重要的研究成果。例如,他们通过收集和处理全球范围内的机票价格数据,利用Hadoop+Hive进行机票价格模型的建立和预测分析。同时,也在可视化方面进行了一些探索,将预测结果以图表、地图等形式展示。 (2)发展趋势 未来,基于Hadoop+Hive的机票价格预测分析与可视化的研究将继续发展。随着大数据技术的不断演进和应用,机票价格数据的规模和复杂性将进一步增加,需要更加强大和高效的数据处理和分析能力。因此,研究者将继续深化对Hadoop+Hive的应用,探索更加有效的机票价格分析和预测方法。同时,也将更加注重可视化技术的应用,提供更直观和易于理解的预测结果展示方式。 (3)参考文献 [1]卢敏,贾玉璇.基于多任务学习的机票价格预测模型[J].计算机工程与设计,2023 [2]王双,徐瑶,韩建云等.基于机器学习算法的机票价格预测研究[J].民航学报,2022. [3]姚悦.基于多预测模型的机票价格预测[D].东南大学,2021. [4]单文煜,吴垠,陈鹏.基于机器学习的机票价格预测研究[J].现代计算机,2020. [5]王楠,张显,李冬梅.基于大数据机器学习的航班价格预测研究[J].黑龙江大学自然科学学报,2019. [6]郭才森.近十年国内机票价格市场化改革进程分析与展望[J].民航管理,2021,(04):57-62. [7]陈建蓉.基于统计分析的航空货运价格预测[D].电子科技大学,2020. [8]鞠铁鑫.基于统计分析的航班价格变化差异性问题研究[D].黑龙江大学,2018. [9]Huang T ,Chen C ,Schwartz Z .Do I book at exactly the right time? Airfare forecast accuracy across three price-prediction platforms[J].Journal of Revenue and Pricing Management,2019,18(4):281-290. [10]Huang F ,Huang H .Event ticket price prediction with deep neural network on spatial-temporal sparse data[C]//[出版者不详],2020: | |||||||
3.主要设计内容 本项目主要包括以下几个部分: 数据收集和清洗: 从各个航空公司和第三方机票平台收集大规模的机票价格数据,包括航班信息、日期、价格等。对收集到的数据进行清洗,处理缺失值、异常值和重复值等,确保数据的准确性和完整性。 数据存储和管理: 利用Hadoop的分布式文件系统(HDFS)存储机票价格数据,并使用Hive进行数据管理和查询。将机票价格数据通过Hive表的方式进行组织和存储,方便后续的数据分析和预测。 数据分析和建模: 使用Hive进行数据分析,通过SQL语言对机票价格数据进行聚合、统计和计算,提取有用的特征。基于机票价格的历史数据,可以使用统计模型、时间序列模型或机器学习算法构建机票价格预测模型。选择合适的预测模型,根据历史数据进行训练和验证,得到预测模型的参数和准确度指标。 价格预测和可视化: 利用构建好的机票价格预测模型对未来时间段的机票价格进行预测。根据预测结果,可以将机票价格的变化趋势以可视化的方式进行展示,例如折线图、柱状图、地图等。通过可视化图表,使预测结果更加直观和易于理解,帮助旅客了解机票价格的变化规律,做出更好的出行决策。 用户界面设计:通过echarts等方式,将预测结果以图表、列表等形式直观地展现给用户,方便用户了解和比较不同的飞机票价格。 | |||||||
4.基本设计思路及技术关键点 (1)基本设计思路 将大数据处理,充分利用Hadoop和hive的分布式计算和存储能力,首先,收集并整理历史机票价格数据;然后,基于这些数据,构建预测模型;最后,利用已训练的模型对未来机票价格进行预测和分析,然后通过echarts生成可视化大屏。这些步骤可以帮助航空业务决策者预测未来的机票价格趋势,从而做出合理的定价和市场策略。
Hadoop通过分布式文件系统HDFS和分布式计算框架MapReduce,实现了大规模数据的存储和处理。通过合理的数据切分和分布式计算,可以充分利用集群中的计算资源,提高数据处理的效率和吞吐量。他采用数据冗余和容错机制,保证数据的可靠性和冗余备份。数据被切分成多个块,并存储在集群中的多个节点上,一旦某个节点出现故障,仍然可以通过其他副本进行数据的访问和计算。他的核心编程模型是MapReduce,它将数据处理任务分解为Map和Reduce两个阶段。开发人员可以通过编写Map和Reduce函数,实现数据的分析、处理和计算。此外,Hadoop还支持更高级的编程接口如Spark、Hive和Pig等,提供更丰富的数据处理能力和编程模型。 DrissionPage提供了简洁友好的API和丰富的文档,使得开发者可以快速上手并构建自己的爬虫程序。内置了自动化处理的功能,如动态加载、表单提交、验证码识别等,可以处理各种复杂的网页操作,省去了手动模拟的麻烦。支持多线程爬取,可以同时处理多个页面,提高爬取效率。支持将爬取的数据保存到各种格式的文件中,如CSV、Excel、数据库等,方便后续的数据分析和处理。提供了完善的日志记录和错误处理机制,便于定位和解决爬取过程中的问题。 使用Flask框架创建Web应用程序,搭建后端服务器,处理前端请求和逻辑处理。Flask提供了路由、模板引擎、HTTP请求处理等功能,可以处理前端与后端的交互。选择合适的Echarts图表类型和外观样式,根据设计需求和数据特点进行配置。利用Echarts提供的丰富的配置选项,对图表进行个性化定制,包括图表的主题、颜色、动画效果等。 PyFlink能够处理无界流式数据,将数据以连续、实时的方式进行处理和分析。它支持事件时间和处理时间两种处理方式,并具备窗口、水印等功能,可以实现对流数据的实时处理和聚合。PyFlink借助Apache Flink的分布式计算引擎,能够在大规模集群上进行并行计算和处理。通过将作业划分为多个任务,并利用网络通信进行数据交换和计算,实现高效的分布式计算。PyFlink提供了灵活的状态管理机制,可以对流式数据进行状态的存储和更新。PyFlink采用事件驱动的编程模型,开发者可以通过定义事件处理函数和操作符来处理输入的事件流。这样的模型能够快速响应事件的到达,并进行实时的处理和计算。
| |||||||
能够准确预测飞机票价格、生成可视化页面,满足用户的需求。具体的预期成果包括 1.高性能的数据处理:利用Hadoop+Hive的分布式计算框架和数据存储技术,预期成果应具有高性能的数据处理能力,能够处理和分析大规模的机票价格数据,提供快速高效的预测和可视化结果。 2.准确的预测结果:通过使用Hadoop+Hive的大数据处理和分析能力,预期成果将提供准确的机票价格预测结果。这将帮助用户在选择出行时间和购买机票时更加明智和高效,从而节省旅行成本。 3.可视化展示:利用可视化技术将机票价格的预测结果以直观的图表、地图等形式展示给用户,使用户更好地理解机票价格的变化趋势和规律,帮助他们选择合适的出行时间和机票购买策略。 | |||||||
6.指导教师意见及建议 签字: 2023年11 月 30日 |
核心算法代码分享如下:
- #使用PySpark完成部分机票指标分析
- from pyspark.sql.types import StringType, StructField, IntegerType, DoubleType, StructType
-
- from pyspark.sql.functions import col
-
- from pyspark.sql import SparkSession
-
- csv_format = 'com.databricks.spark.csv'
- mysql_url = "jdbc:mysql://bigdata:3306/Flink_Fliggy_Flight"
- prop = {'user': 'root', 'password': '123456', 'driver': "com.mysql.jdbc.Driver"}
- # 1.创建SparkSession
- spark = SparkSession.builder.appName("tables01_task").getOrCreate()
-
- fields = [
- StructField("start_city", StringType(), True),
- StructField("end_city", StringType(), True),
- StructField("stime", StringType(), True),
- StructField("airline_name", StringType(), True),
- StructField("flight_info", StringType(), True),
- StructField("flight_type1", StringType(), True),
- StructField("flight_type2", StringType(), True),
- StructField("setup_time", StringType(), True),
- StructField("arr_time", StringType(), True),
- StructField("start_airport", StringType(), True),
- StructField("arr_airport", StringType(), True),
- StructField("ontime_rate", IntegerType(), True),
- StructField("flight_total_time", StringType(), True),
- StructField("price", IntegerType(), True),
- StructField("price_desc", StringType(), True),
- StructField("flight_company", StringType(), True),
- StructField("flight_type3", StringType(), True),
- StructField("setup_time_math", DoubleType(), True),
- StructField("arr_time_math", DoubleType(), True),
- StructField("arr_time2", StringType(), True),
- StructField("start_airport_simple", StringType(), True),
- StructField("arr_airport_simple", StringType(), True),
- StructField("flight_total_time_math", IntegerType(), True),
- StructField("price_desc_math", DoubleType(), True),
-
- ]
- schema= StructType(fields)
- # 2.读取本地文件路径
- # flights_data = spark.read.format(csv_format).options( ending='utf-8').load(
- # "hdfs://bigdata:9000/flink_fliggy_flight/flight/hdfs_flights.csv")
- flights_data=spark.read.option("header", "false").schema(schema).csv("hdfs://bigdata:9000/flink_fliggy_flight/flight/hdfs_flights.csv")
- # 3.创建临时表
- flights_data.createOrReplaceTempView("ods_flight")
-
- # 4.工作经验与薪水的关系
- tables01_sql='''
- select distinct airline_name,price_desc_math,price_desc,stime
- from ods_flight
- order by stime desc,price_desc_math asc
- limit 30
- '''
- spark.sql(tables01_sql).write.jdbc(mysql_url, 'tables01', 'overwrite', prop)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。