Ich habe eine CSV-Datei mit einer Struktur, die der folgenden ähnelt.Durchschnittspreis für ein großes Dataset über Zeitintervalle erhalten
INDEX,SYMBOL,DATETIMETS,PRICE,SIZE
0,A,2002-12-02 9:30:20,19.75,30200
1,A,2002-12-02 9:30:22,19.75,100
2,A,2002-12-02 9:30:22,19.75,300
3,A,2002-12-02 9:30:22,19.75,100
4,A,2002-12-02 9:30:23,19.75,100
5,A,2002-12-02 9:30:23,19.75,100
6,A,2002-12-02 9:30:23,19.75,100
7,A,2002-12-02 9:30:23,19.75,100
.......
.......
Es gibt über eine Million Zeilen, die sich über mehrere Jahre erstrecken. Ich habe diese CSV-Datei in einen Spark-Datenframe (Pyspark) geladen. Was ist der schnellste Weg für mich, den Durchschnitt des Preises in 5-Minuten-Intervallen zu erhalten?
Was ich gerade mache ist Schleifen durch den gesamten Datensatz und Abfrage der Zeit in 5-Minuten-Intervallen. z.B.
filteredSqlString = ("SELECT PRICE FROM DF WHERE DATETIMETS >= '" + str(sdt) + "'"
+ " AND DATETIMETS < '" + str(idt) + "'")
filtered_df = sqlContext.sql(filteredSqlString);
MEAN_PRICE = filtered_df.select([mean("PRICE")]).first()[0];
und dies durch Erhöhen Startdatetime und Ende Datetime in einer Schleife läuft immer nimmt
sdt = idt;
idt = sdt + timedelta(minutes=5);
Dieser Ansatz. Gab es einen schnelleren Weg, dies zu erreichen?
Vielen Dank für Ihre Antwort. – Bookamp