我有一个包含字段timestamp
的不同字段的PySpark DataFrame。
sdata = sc.parallelize([
[('id', 1), ('timestamp', 1506339960), ('data_pk', 111)],
[('id', 2), ('timestamp', 1506340140), ('data_pk', 222)],
...
])
# Convert to tuple
sdata_converted = sdata.map(lambda x: (x[0][1], x[1][1], x[2][1]))
# Define schema
sschema = StructType([
StructField("id", LongType(), True),
StructField("timestamp", LongType(), True),
StructField("data_pk", LongType(), True)
])
df = sqlContext.createDataFrame(sdata_converted, sschema)
如何只选择那些引用过去12小时的行?
答案 0 :(得分:3)
首先获得12小时前的时间戳,
import datetime
twelve_hours = (datetime.datetime.now() -
datetime.timedelta(hours = 12)) \
.strftime("%Y-%m-%d %H:%M:%S")
然后在过滤语句中使用它:
df_new = df.withColumn("timestamp", df.timestamp.cast("timestamp")) \
.filter(df.timestamp > twelve_hours)