hadoop 用 parquet 锉在Impala表中进行类型转换

kgsdhlau  于 2022-11-01  发布在  Hadoop
关注(0)|答案(1)|浏览(126)

我在使用 parquet 文件将Impala的柱类型从string更改为int时遇到了问题。
使用:
alter table DATABASE.TABLE change COL COL Int(从字符串到整数)

alter table DATABASE.TABLE change COL COL string(从整型到字符串)
阅读数据时产生错误:
文件x具有与列“db.table. col”不兼容Parquet架构。列类型:INT, parquet 结构模式:可选的字节数组列[i:1 d:1 r:0]
通过阅读this文档,我了解到:

  • 微小至微小/微小:好的
  • SMALLINT到INT:好的

考虑到以下几点:
列的任何其他类型转换都会在查询过程中产生转换错误
这是否意味着除上述类型转换之外的所有类型转换都是可能的(查询通过),但在查询时会引发错误?
其他信息:

  • 在计算统计信息(或选择)之前刷新表并不能解决此问题。
  • 更改列类型后使元数据失效时也是如此。
  • 该问题出现在色调或使用python脚本时。
  • 我使用的是impalad版本2.12.0-cdh5.16.2发行版
  • 该错误与第一个 parquet 文件有关(更新类型前包含表内容的文件)。x1c 0d1x
brjng4g3

brjng4g31#

由于你正在改变数据类型(metadata),你需要invalidate metadata以便impala强制寻找元数据而不使用旧的元数据。
所以,在你的alter语句之后,请使用这个来修复错误。Impala将在查询时使用最新的元数据,SQL将正常工作。

INVALIDATE METADATA mytable

相关问题