Используя Spark 2.4.3, вы можете конвертировать ваши строковые даты следующим образом:
import pyspark.sql.functions as sf
df = sparksession.createDataFrame(
[("8 October 2018", 4407), ("17 September 2017", 13326)],
["date", "count"],
)
df.show()
df.select(
sf.to_date("date", "d MMMMM yyyy").alias("new_date"), "date", "count"
).orderBy("new_date").show()
И вот результаты:
+-----------------+-----+
| date|count|
+-----------------+-----+
| 8 October 2018| 4407|
|17 September 2017|13326|
+-----------------+-----+
+----------+-----------------+-----+
| new_date| date|count|
+----------+-----------------+-----+
|2017-09-17|17 September 2017|13326|
|2018-10-08| 8 October 2018| 4407|
+----------+-----------------+-----+
PS .: Для Spark 3.0.0 , формат строки изменился. Для преобразования даты следует использовать строку "d MMMM yyyy"
(на один меньше M
), как это задокументировано здесь .
Диаграмма
Чтобы нарисовать линейную диаграмму, вы может использовать Pandas и matplotlib:
pdf = (
df.select(
sf.to_date("date", "d MMMMM yyyy").alias("new_date"),
"date",
"count",
)
.orderBy("new_date")
.toPandas()
)
pdf.plot.line(x="new_date", y="count")