小编Dou*_*esh的帖子

parquet int96时间戳通过python转换为日期时间/日期

长话短说

我想将int96 值(例如 ACIE4NxJAAAKhSUA)转换为可读的时间戳格式(例如2020-03-02 14:34:22或任何可以正常解释的格式)...我主要使用 python,所以我希望构建一个执行此转换的函数。如果有另一个函数可以起到相反的作用,那就更好了。

背景

我正在使用 parquet-tools 通过以下命令将原始 parquet 文件(使用快速压缩)转换为原始 JSON:

C:\Research> java -jar parquet-tools-1.8.2.jar cat --json original-file.snappy.parquet > parquet-output.json
Run Code Online (Sandbox Code Playgroud)

在 JSON 中,我将这些值视为时间戳:

{... "_id":"101836","timestamp":"ACIE4NxJAAAKhSUA"}
Run Code Online (Sandbox Code Playgroud)

我已经确定“ACIE4NxJAAAKhSUA”的时间戳值确实是 int96 (这也通过读取镶木地板文件的架构得到了证实......

message spark_schema {
 ...(stuff)...
  optional binary _id (UTF8);
  optional int96 timestamp;
}
Run Code Online (Sandbox Code Playgroud)

我认为这也被称为 Impala Timestamp (至少这是我收集到的)

进一步的问题研究

我一直在到处寻找一些关于如何“读取” int96 值(到 python 中——我想将其保留在该语言中,因为我最熟悉它)并输出时间戳的函数或信息——我什么也没找到。

这是我已经研究过的一篇文章(与该主题相关):

  • ParquetWriter 在 SO 中的研究在这里
  • 通过 golan 在 SO中铸造 int96注意:这有一个我可以探索的功能,但我不知道如何深入研究

关于贬值的 int96 时间戳

请不要要求我停止在 parquet 文件中使用旧的/已贬值的时间戳格式,通过迄今为止所做的研究,我很清楚这一点。我是文件/数据的接收者——我无法更改创建时使用的格式。

如果有另一种方法来控制初始 JSON 输出以提供“非 int96”值——我也会对此感兴趣。 …

python timestamp casting apache-spark parquet

6
推荐指数
1
解决办法
9046
查看次数

标签 统计

apache-spark ×1

casting ×1

parquet ×1

python ×1

timestamp ×1