镶木地板文件 - 可变频率的时间序列

时间:2018-02-08 18:47:06

标签: time-series parquet

我的情况是:

  • 我有数百个时间序列参数列表
  • 每个参数彼此独立
  • 每个参数都有一个基本频率(比方说,10hz),但由于硬件限制,可以保存9到11赫兹(可变频率)。
  • 每个参数都有不同的基频
  • 通常情况下,我只需要一次读取一些参数(列)和#34;加入它们"时间戳。

我的问题是:

  • 根据这个简短的描述,您认为实木复合地板是一种合适的文件格式吗?
  • 拼花可以处理变频吗?换句话说,它是否保存了与每个值相关联的时间戳?

2 个答案:

答案 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()