TL;DR
我想将int96值(例如ACIE4NxJAAAKhSUA)转换为可读的时间戳格式,例如2020-03-02 14:34:22或任何可以正常解释的格式...我主要使用python,所以我正在寻找一个执行此转换的函数。如果有另一个功能可以反其道而行之 -- 甚至更好。
背景
我正在使用镶木地板工具通过以下通信将原始镶木地板文件(具有快速压缩)转换为原始JSON:
C:\Research> java -jar parquet-tools-1.8.2.jar cat --json original-file.snappy.parquet > parquet-output.json
在JSON中,我看到这些值作为时间戳:
{... "_id":"101836","timestamp":"ACIE4NxJAAAKhSUA"}
我已经确定“ACIE4NxJAAAKhSUA”的时间戳值确实是int96(这也通过读取镶木地板文件的架构来确认....
message spark_schema {
...(stuff)...
optional binary _id (UTF8);
optional int96 timestamp;
}
我认为这也被称为Impala Timestamp(至少这是我收集到的)
进一步的问题研究
我一直在到处寻找一些关于如何“读取”int96值的函数或信息(进入python - 我想用这种语言保留它,因为我最熟悉它)并输出时间戳 - 我什么也没找到。
以下是我已经研究过的一篇文章(与这个主题有关):
ParquetWriter在SO的研究在这里
通过golan在SO这里铸造int96注意:这有一个功能,我可以探索,但我不确定如何深入研究
关于折旧的 int96 时间戳
请不要要求我停止在镶木地板文件中使用旧的/折旧的时间戳格式,我很清楚到目前为止我所做的研究。我是文件/数据的接收者 - 我无法更改创建时使用的格式。
如果有另一种方法可以控制初始JSON输出以提供“non int96”值 - 我也会对此感兴趣。
非常感谢您对SO社区的帮助!
子衿沉夜
慕妹3242003
相关分类