Tempo simplifies time series manipulation in Spark. To begin, you can wrap a standard Spark DataFrame into a TSDF (Time Series DataFrame) by specifying the timestamp column and any partition columns.
Common operations supported by Tempo include:
- AS OF joins
- Rolling statistics with user-specified window lengths
- Featurization using lagged values
- Delta Lake optimization on time and partition fields
from pyspark.sql.functions import *
from tempo import *
# Load and prepare your Spark DataFrame
phone_accel_df = spark.read.format("csv") \
.option("header", "true") \
.load("dbfs:/home/tempo/Phones_accelerometer") \
.withColumn("event_ts", (col("Arrival_Time").cast("double")/1000).cast("timestamp")) \
.withColumn("x", col("x").cast("double")) \
.withColumn("y", col("y").cast("double")) \
.withColumn("z", col("z").cast("double")) \
.withColumn("event_ts_dbl", col("event_ts").cast("double"))
# Convert to a Tempo Time Series DataFrame (TSDF)
phone_accel_tsdf = TSDF(phone_accel_df, ts_col="event_ts", partition_cols = ["User"])
display(phone_accel_tsdf)