apache-spark - pyspark 中的 RDD 操作以查找查询
问题描述
您好我想找到 rdd 操作以在下面找到此查询:
我试图找到 MONTH 和 DAY_OF_WEEK、航班数量和平均延误,其中 TAIL_NUMBER = 'N407AS'。注意航班数量和平均延误应单独汇总。平均延迟应按 MONTH 和 DAYS_OF_WEEK 分组。
# this is for the flights
def import_parse_rdd(data):
# create rdd
rdd = sc.textFile(data)
# remove the header
header = rdd.first()
rdd = rdd.filter(lambda row: row != header) #filter out header
# split by comma
split_rdd = rdd.map(lambda line: line.split(','))
row_rdd = split_rdd.map(lambda line: Row(
YEAR = int(line[0]),MONTH = int(line[1]),DAY = int(line[2]),DAY_OF_WEEK = int(line[3])
,AIRLINE = line[4],FLIGHT_NUMBER = int(line[5]),
TAIL_NUMBER = line[6],ORIGIN_AIRPORT = line[7],DESTINATION_AIRPORT = line[8],
SCHEDULED_DEPARTURE = line[9],DEPARTURE_TIME = line[10],DEPARTURE_DELAY = 0 if "".__eq__(line[11]) else float(line[11]),TAXI_OUT = 0 if "".__eq__(line[12]) else float(line[12]),
WHEELS_OFF = line[13],SCHEDULED_TIME = line[14],ELAPSED_TIME = 0 if "".__eq__(line[15]) else float(line[15]),AIR_TIME = 0 if "".__eq__(line[16]) else float(line[16]),DISTANCE = 0 if "".__eq__(line[17]) else float(line[17]),WHEELS_ON = line[18],TAXI_IN = 0 if "".__eq__(line[19]) else float(line[19]),
SCHEDULED_ARRIVAL = line[20],ARRIVAL_TIME = line[21],ARRIVAL_DELAY = 0 if "".__eq__(line[22]) else float(line[22]),DIVERTED = line[23],CANCELLED = line[24],CANCELLATION_REASON = line[25],AIR_SYSTEM_DELAY = line[26],
SECURITY_DELAY = line[27],AIRLINE_DELAY = line[28],LATE_AIRCRAFT_DELAY = line[29],WEATHER_DELAY = line[30])
)
return row_rdd
这是我目前正在使用的 rdd。
任何帮助将不胜感激,因为我在 RDD 操作方面没有太多经验。
解决方案
推荐阅读
- amazon-web-services - 更改了 API-server 清单文件,但未实施更改
- excel - 如何删除标题中没有指定单词的所有列?
- php - 如何从 Piwigo 中删除 index.php 和 picture.php?
- go - 如何使用 go modules 在特定分支上导入包
- ios - 如何在 VCard 中使用“源”属性?
- android - 如何使软键盘变为静态?
- css - 内联样式属性的 CSS 选择器,同时排除属性值
- python - 如何在 Plotly Express 平行坐标图中格式化刻度?
- oracle - 使用 perl 运行 oracle 生产者
- python - 在 django 模板中迭代字典时卡住了