我想将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 中——我想将其保留在该语言中,因为我最熟悉它)并输出时间戳的函数或信息——我什么也没找到。
这是我已经研究过的一篇文章(与该主题相关):
请不要要求我停止在 parquet 文件中使用旧的/已贬值的时间戳格式,通过迄今为止所做的研究,我很清楚这一点。我是文件/数据的接收者——我无法更改创建时使用的格式。
如果有另一种方法来控制初始 JSON 输出以提供“非 int96”值——我也会对此感兴趣。 …