Gruppe Funke dataframe nach Datum
Hab ich geladen ein DataFrame von einer SQL Server-Tabelle. Es sieht wie folgt aus:
>>> df.show()
+--------------------+----------+
| timestamp| Value |
+--------------------+----------+
|2015-12-02 00:10:...| 652.8|
|2015-12-02 00:20:...| 518.4|
|2015-12-02 00:30:...| 524.6|
|2015-12-02 00:40:...| 382.9|
|2015-12-02 00:50:...| 461.6|
|2015-12-02 01:00:...| 476.6|
|2015-12-02 01:10:...| 472.6|
|2015-12-02 01:20:...| 353.0|
|2015-12-02 01:30:...| 407.9|
|2015-12-02 01:40:...| 475.9|
|2015-12-02 01:50:...| 513.2|
|2015-12-02 02:00:...| 569.0|
|2015-12-02 02:10:...| 711.4|
|2015-12-02 02:20:...| 457.6|
|2015-12-02 02:30:...| 392.0|
|2015-12-02 02:40:...| 459.5|
|2015-12-02 02:50:...| 560.2|
|2015-12-02 03:00:...| 252.9|
|2015-12-02 03:10:...| 228.7|
|2015-12-02 03:20:...| 312.2|
+--------------------+----------+
Nun möchte ich zu der Gruppe (und-Summe) Werte pro Stunde (oder Tag, oder Monat oder...), aber ich habe wirklich keine Ahnung wie ich es machen kann.
Das ist, wie lade ich den DataFrame. Ich habe das Gefühl, dass dies nicht der richtige Weg, es zu tun, aber:
query = """
SELECT column1 AS timestamp, column2 AS value
FROM table
WHERE blahblah
"""
sc = SparkContext("local", 'test')
sqlctx = SQLContext(sc)
df = sqlctx.load(source="jdbc",
url="jdbc:sqlserver://<CONNECTION_DATA>",
dbtable="(%s) AS alias" % query)
Ist es ok?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit 1.5.0 Spark bietet eine Reihe von Funktionen wie
dayofmonth
,hour
,month
oderyear
die den Betrieb auf Datums-und Zeitstempel. Also, wenntimestamp
ist einTimestampType
alles, was Sie brauchen, ist eine korrekte Ausdruck. Zum Beispiel:Pre-1.5.0 Ihre beste option ist die Verwendung
HiveContext
- und Hive UDFs entweder mitselectExpr
:- oder raw-SQL:
Nur daran erinnern, dass die aggregation wird durchgeführt, indem der Funke nicht geschoben-bis auf die externe Quelle. In der Regel ist es ein gewünschtes Verhalten, aber es gibt Situationen, wenn Sie am Liebsten auf aggregation als eine Unterabfrage zu beschränken, Daten zu übertragen.
Können, können Sie auch verwenden, date_format zu jeder Zeit, die Sie wünschen.
Groupby bestimmten Tag:
JS:
Groupby bestimmten Monat (nur das format zu ändern):
JS: