Я хочу найти максимальное месячное значение этого запроса, чтобы получить самый загруженный аэропорт в месяц.
Без использования команд SQL существует ли функция pyspark для получения максимальных значений и уменьшения RDD всего 12 строк (одна строка в месяц)?
from pyspark import SparkContext
from pyspark.sql import SQLContext
from operator import add
sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)
rows = sc.textFile("data.csv")
data = rows.map(lambda line: line.split(","))
header = data.first()
q = data.filter(lambda line:( line != header))\
.map(lambda x: (x[1]+'-'+x[16], 1))\
.reduceByKey(add)\
.map(lambda x: (x[0].split('-'), x[1]))\
.map(lambda x: (x[0][0], x[0][1], x[1]))\
.collect()
sqlContext.createDataFrame(q, ['Month', 'Airport', 'Flights']).show(n=15)
+-----+-------+-------+
|Month|Airport|Flights|
+-----+-------+-------+
| 9| DAL| 4388|
| 7| STX| 43|
| 4| PNS| 834|
| 12| EUG| 549|
| 5| ERI| 120|
| 9| ATL| 34258|
| 7| PHX| 17846|
| 12| MYR| 434|
| 11| CWA| 140|
| 9| DAY| 1307|
| 12| ADQ| 60|
| 1| MTJ| 307|
| 10| APF| 1|
| 2| MAF| 657|
| 1| SRQ| 687|
+-----+-------+-------+