我的情况是:
我的问题是:
答案 0 :(得分:1)
Parquet本身并没有为数据添加时间戳,您需要自己动手,添加一个额外的字段,您可以在其中存储每个读数的时间戳。如果您知道每个参数的读取频率,那么在将数据插入文件之前转换为时间戳是微不足道的。
您遇到的下一个问题是,参数不会同时准确读取,因此您必须在需要对数据进行的任何计算中对此进行说明。此时,根据您的需求和数据的性质,您有许多不同的选择,我只提一个。对于连续变量,您可以重新采样数据,以便每个参数的时间戳都相同。您可以通过在实时时间戳内插读数来计算目标时间戳的读数。此时有许多数学考虑,但它们超出了您的问题范围和存储格式的相关性。
答案 1 :(得分:1)
1.是的 2.否
如果差异大于5(表示一个是5Hz,另一个是10Hz),我建议将每个频率的数据保存在不同的文件中。 另一种方法是使用null填补空白,以便数据想要这样的东西
schema = types.StructType([
types.StructField("timespeed", types.LongType(), False),
types.StructField("speed", types.LongType(), True),
types.StructField("tempature", types.LongType(), True)
])
data = [
(1, 6, 10),
(2, 7, None),
(3, None, None),
(4, 8, 11),
(5, 9, None)
]
df_w_schema = sqlContext.createDataFrame(data, schema)
df_w_schema.collect()
df_w_schema.write.parquet('nullable_check_w_schema')
df_parquet_w_schema = sqlContext.read.schema(schema).parquet('nullable_check_w_schema')
df_parquet_w_schema.printSchema()