大数据(1.1)纽约出租车大数据分析实战:从Hadoop到Azkaban的全链路解析与优化

server/2025/3/25 16:55:06/

目录

一、背景与数据价值‌

‌二、技术选型与组件分工‌

‌三、数据准备与预处理‌

四、实战步骤详解‌

‌1. 数据上传至HDFS

‌2. Hive数据建模与清洗‌

4‌.2.1 建表语句(分区表按年份)‌:

‌4‌.2.2 数据清洗(剔除无效记录)‌:

‌3. 多维分析(Hive SQL案例)‌

‌案例1:工作日 vs 周末的平均收入对比

‌案例2:Top 10热门上下车区域(基于Geohash)

‌4. 数据导出至MySQL(Sqoop)

5. 任务调度(Azkaban配置)

‌五、分析结果与业务洞察‌

六、性能优化‌‌

七、总结


一、背景与数据价值

纽约出租车数据作为城市交通的“数字脉搏”,记录了数千万次行程的时空分布、支付行为和运营效率。该数据集包含‌20GB+的CSV文件‌,涵盖乘客数量、行程距离、GPS坐标、费用明细等核心字段,是研究城市交通模式、司机收入优化和异常行为检测的黄金资源‌15。
传统数据库难以应对海量数据的存储与实时分析需求,而‌Hadoop生态‌通过分布式计算、任务调度与自动化ETL,实现了TB级数据的高效处理与价值挖掘‌


‌二、技术选型与组件分工

  1. Hadoop HDFS‌:分布式存储原始数据(CSV格式,约20GB)。
  2. Hive‌:数据清洗、ETL处理及多维分析。
  3. Sqoop‌:将分析结果导出至MySQL,供可视化展示。
  4. Azkaban‌:调度ETL任务,实现流程自动化。
  5. 辅助工具‌:Python(数据采样)、Zeppelin(交互式查询)。

‌三、数据准备与预处理

数据来源‌:纽约市开放数据平台(2018-2021年出租车行程记录)
字段示例:

vendor_id, pickup_datetime, dropoff_datetime, passenger_count, 
trip_distance, pickup_longitude, pickup_latitude, 
payment_type, fare_amount, tip_amount, total_amount

数据痛点‌:

  • 坐标值异常(如经纬度为0)
  • 行程时间为负值(dropoff早于pickup)
  • 乘客数超过6人的非法记录

四、实战步骤详解

1. 数据上传至HDFS
# 创建HDFS目录
hadoop fs -mkdir /user/hadoop/nyc_taxi# 上传本地数据到HDFS
hadoop fs -put nyc_taxi_2018.csv /user/hadoop/nyc_taxi/
2. Hive数据建模与清洗
4‌.2.1 建表语句(分区表按年份)‌:
sql">CREATE EXTERNAL TABLE IF NOT EXISTS taxi_trips (vendor_id STRING,pickup_datetime TIMESTAMP,dropoff_datetime TIMESTAMP,passenger_count INT,trip_distance FLOAT,pickup_lat FLOAT,pickup_lon FLOAT,payment_type STRING,fare_amount FLOAT,tip_amount FLOAT,total_amount FLOAT
)
PARTITIONED BY (year INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
‌4‌.2.2 数据清洗(剔除无效记录)‌:
sql">INSERT OVERWRITE TABLE taxi_trips PARTITION(year=2018)
SELECT vendor_id,pickup_datetime,dropoff_datetime,passenger_count,trip_distance,pickup_lat,pickup_lon,payment_type,fare_amount,tip_amount,total_amount
FROM raw_taxi_data
WHERE pickup_lat BETWEEN 40.5 AND 40.9 AND pickup_lon BETWEEN -74.3 AND -73.7AND passenger_count BETWEEN 1 AND 6AND dropoff_datetime > pickup_datetime;
3. 多维分析(Hive SQL案例)
案例1:工作日 vs 周末的平均收入对比
sql">SELECT CASE WHEN dayofweek(pickup_datetime) IN (1,7) THEN 'Weekend' ELSE 'Weekday' END AS day_type,AVG(total_amount) AS avg_income,COUNT(*) AS trips
FROM taxi_trips
WHERE year = 2018
GROUP BY day_type;
案例2:Top 10热门上下车区域(基于Geohash)
sql">SELECT geohash(pickup_lat, pickup_lon, 6) AS pickup_geohash,COUNT(*) AS pickup_count
FROM taxi_trips
WHERE year = 2019
GROUP BY geohash(pickup_lat, pickup_lon, 6)
ORDER BY pickup_count DESC
LIMIT 10;
4. 数据导出至MySQL(Sqoop)
sqoop export \
--connect jdbc:mysql://dbserver:3306/nyc_analysis \
--username hadoop \
--password 123456 \
--table trip_summary \
--export-dir /user/hive/warehouse/taxi_trips/year=2018 \
--input-fields-terminated-by ','
5. 任务调度(Azkaban配置)
# daily_etl.flow
nodes:- name: hive_cleantype: commandconfig:command: hive -f /jobs/clean_taxi_data.sql- name: sqoop_exporttype: commanddependencies:- hive_cleanconfig:command: sqoop export --connect jdbc:mysql://...retries: 3retry.backoff=60000

支持任务级联重试与邮件告警,降低人工干预成本‌

Azkaban详细操作参考: Azkaban-开源任务调度程序(使用篇) - 简书


‌五、分析结果与业务洞察

  1. 收入趋势‌:周末平均收入比工作日高18%,建议增加周末司机排班。
  2. 支付习惯‌:信用卡支付占比75%,移动支付仅5%,需推动移动端优惠活动。
  3. 异常检测‌:发现凌晨3-4点曼哈顿区域存在高频短途行程,疑似计价器作弊行为。

六、性能优化‌‌

  1. Hive表建议采用ORC格式+Snappy压缩,查询效率提升60%
  2. Sqoop导出时启用--batch模式,减少数据库连接开销
  3. Hive复杂查询耗时较长,可引入Spark进行优化‌

七、总结

  • 技术验证‌:Hadoop生态可稳定支撑日均TB级数据处理,但需结合业务特点定制存储与计算策略‌
  • 商业价值‌:通过分析发现周末溢价时段订单量增长35%,推动平台动态调价策略实施‌
  • 风险提示‌:数据清洗环节剔除12%异常记录,需建立数据质量监控体系‌

文章来源:https://blog.csdn.net/Dreamy_zsy/article/details/146343941
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/server/177172.html

相关文章

【设计模式】三十一、状态模式

系列文章|源码 https://github.com/tyronczt/design-mode-learn 文章目录 系列文章|源码一、模式核心思想二、模式结构三、Java代码示例:订单状态管理1. 定义状态接口2. 实现具体状态类3. 上下文类(Context)4. 客户端调用5. 运行截图 四、状…

【css酷炫效果】纯CSS实现球形阴影效果

【css酷炫效果】纯CSS实现球形阴影效果 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:上传后更新 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了,赶时间,直接上代码。 html结…

Edge浏览器登录微软账户报错0x80190001的解决办法

问题 0x80190001是什么错误?有用户在Edge浏览器上登录微软账户遇到了这个错误代码,这是什么意思?要如何解决呢?一个比较靠谱的解决办法 解决方式 1、下载一个finder(抓包软件)**官网下载地址(…

MySQL配置文件my.cnf详解

目前使用的服务器系统是CentOS8.5 ,针对MySql8.4的配置示例,自己根据实际情况修改。 安装MySql8.4时,MySql8.4没有默认的my.cnf,需要用户根据需要自行配置my.cnf文件,大概可看到下面这样的参数列表,可能不同版本的mysql参数多少会…

tracert命令输出详解

一、tracert命令输出 C:\Users\xsq>tracert www.xqnav.top通过最多 30 个跃点跟踪 到 www.xqnav.top [121.43.162.66] 的路由:1 1 ms 2 ms 3 ms 10.16.0.12 1 ms 2 ms 1 ms 10.1.1.23 4 ms 3 ms 3 ms 49.9.17.58.adsl-pool.jx.chin…

Linux中vscode编程,小白入门喂饭级教程

确保Ubuntu联网 因为后面安装VScode需要从互联网下载。 安装GCC 在桌面空白处右键->打开终端 执行命令:gcc -v 在最后一行可以看到gcc version 7.5.0 如果提示Command ‘gcc’ not found,就查一下如何安装gcc,先把gcc安装好。 安装VS…

【Qt】Qt + Modbus 服务端学习笔记

《Qt Modbus 服务端学习笔记》 1.因为项目的需要,要写一个modbus通信,csdn上感觉有些回答,代码是人工智能生成的,有些细节不对。我这个经过实测,是可以直接用的。 首先要包含Qt 的相关模块 Qt Modbus 模块主要包含以…

云原生高级实验

任务需求:客户端通过访问 www.nihao.com 后,能够通过 dns 域名解析,访问到 nginx 服务中由 nfs 共享的首页文件,内容为:Very good, you have successfully set up the system. 各个主机能够实现时间同步,并…