5
Mam dane w dataframe jak poniżej:jak uzyskać maks. (Datę) z podanego zestawu danych pogrupowanych według niektórych pól za pomocą pyspark?
datetime | userId | memberId | value |
2016-04-06 16:36:... | 1234 | 111 | 1
2016-04-06 17:35:... | 1234 | 222 | 5
2016-04-06 17:50:... | 1234 | 111 | 8
2016-04-06 18:36:... | 1234 | 222 | 9
2016-04-05 16:36:... | 4567 | 111 | 1
2016-04-06 17:35:... | 4567 | 222 | 5
2016-04-06 18:50:... | 4567 | 111 | 8
2016-04-06 19:36:... | 4567 | 222 | 9
muszę znaleźć max (datetime) GroupBy userid, memberid. Kiedy próbowałem jak poniżej:
df2 = df.groupBy('userId','memberId').max('datetime')
Dostaję błąd jako:
org.apache.spark.sql.AnalysisException: "datetime" is not a numeric
column. Aggregation function can only be applied on a numeric column.;
Wyjście chciałem się następująco:
userId | memberId | datetime
1234 | 111 | 2016-04-06 17:50:...
1234 | 222 | 2016-04-06 18:36:...
4567 | 111 | 2016-04-06 18:50:...
4567 | 222 | 2016-04-06 19:36:...
Czy ktoś mógłby mi pomóc jak mogę maksymalna data wśród danych za pomocą ramek danych PySpark?
dziękuję mi to pomogło. Ale, czy możesz wyjaśnić, czy musimy robić to samo, co w pierwszym kroku. Mam już ramkę danych we wspomnianym formacie jak w Q. Przepraszam, jeśli moje zapytanie jest podstawowe, ponieważ jestem początkującym użytkownikiem. – cool716
Nie musisz łączyć się równolegle. Tutaj tworzę ramkę danych, aby dostarczyć powtarzalny przykład. – zero323
Dziękuję. Ponadto, jeśli mam 2 kolumny dat, w jaki sposób mogę uzyskać maksimum każdej z tych samych kolumn grupowania? Oto df: df = sc.parallelize ([ ("2016-04-06 16:36", "2016-04-05 16:36", 1234, 111, 1), ("2016-04- 06 17:35 "," 2016-04-08 17:35 ", 1234, 111, 5), ]). ToDF ([" datetime1 "," datetime2 "," userId "," memberId "," value " ]) – cool716