镶木地板数据类型问题中具有 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 版本中,没有可用于读取数据的开关或配置更改。因此你目前有两个选择:
- 降级到 Presto .221
- 升级到Presto 324
我在保存 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 兼容格式的时间戳值。
我将 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 版本中,没有可用于读取数据的开关或配置更改。因此你目前有两个选择:
- 降级到 Presto .221
- 升级到Presto 324
我在保存 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 兼容格式的时间戳值。