镶木地板数据类型问题中具有 alluxio 存储的 Hive Metastore

Hive metastore with alluxio storage in parquet data type problem

我将 prestodb 与 hive metastore 一起用于模式存储,将 alluxio 缓存用作数据的外部存储。 alluxio和hive schema中使用的存储格式是PARQUET。 使用配置单元目录从 presto 检索时间戳字段时。我收到跟随错误。

列 utdate 声明为类型 timestamp,但 Parquet 文件将该列声明为类型 INT64

数据集的架构是

create table test( utcdate timestamp ) WITH ( format='PARQUIET', external_location='alluxio://path-toserver/directory-path-to-parquet' )

从prestodb v0.221升级到v0.226版本后出现此问题。

不清楚你在问什么,所以我假设问题是:如何读取数据。

在 .226 版本中,没有可用于读取数据的开关或配置更改。因此你目前有两个选择:

我在保存 parquet 时使用它来解决时间戳问题。

pyarrow.parquet.write_table(self.arrow_table, file_name, use_deprecated_int96_timestamps=真)

presto 和spark 使用int96 时间戳值来存储以纳秒为单位的时间戳。 pyarrow table 的默认时间戳格式是 int64,而 presto 将 int64 视为 bigint 数据类型。如果我们在 pyarrow 中使用不推荐使用的时间戳 int96 版本,我们将获得 presto 兼容格式的时间戳值。