镶木地板数据类型问题中包含alluxio存储的Hive元存储

镶木地板数据类型问题中包含alluxio存储的Hive元存储,hive,parquet,presto,alluxio,Hive,Parquet,Presto,Alluxio,我使用prestodb和hive metastore进行模式存储,使用alluxio缓存作为数据的外部存储。alluxio和hive模式中使用的存储格式为拼花。 使用配置单元目录从presto检索时间戳字段时。我得到了跟踪错误 列utdate声明为typetimestamp,但Parquet文件将列声明为typeINT64 数据集的架构为 使用(format='PARQUIET',创建表测试(utcdate时间戳), 外部位置alluxio://path-toserver/directory-p

我使用prestodb和hive metastore进行模式存储,使用alluxio缓存作为数据的外部存储。alluxio和hive模式中使用的存储格式为拼花。 使用配置单元目录从presto检索时间戳字段时。我得到了跟踪错误

列utdate声明为typetimestamp,但Parquet文件将列声明为typeINT64

数据集的架构为

使用(format='PARQUIET',创建表测试(utcdate时间戳), 外部位置alluxio://path-toserver/directory-path-to-parquet' )


这个问题是在从prestodbv0.221升级到v0.226版本后产生的。

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

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

  • 降到前221级
  • 升级到

我在保存拼花地板以解决时间戳问题时使用此选项

pyarrow.parquet.write_table(self.arrow_table,文件名,use_deprecated_int96_timestaps=True)


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

我建议您切换到PrestoSQL(),它没有这个问题。presto.221支持int64作为时间戳,但presto.226不支持int64作为时间戳。226需要int96作为时间戳。pyarrow中已弃用的。@ArsalanMudni您是否检查了Presto 324?它如何处理pyarrow数据?