首页 > 解决方案 > 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 操作方面没有太多经验。

标签: apache-sparkpysparkapache-spark-sql

解决方案


推荐阅读