我正在用另一个表创建一个临时表 AS
子句,其中包括另一个表的分区列也是temp表的一部分,然后得到以下错误。下表是create语句,其中 col4
是表的分区列 xyz
.
在运行create语句时,我得到以下错误。当我移除 col4
在create语句中运行良好。
错误:
编译语句时出错:失败:输入字符串的numberformatexception:“配置单元\默认\分区”(状态=42000,代码=40000)
请帮忙。
例子:
CREATE TEMPORARY TABLE abc STORED AS PARQUET AS SELECT
col1 AS col1,
col2 AS col2,
col3 AS col3,
col4 AS col4
FROM xyz;
1条答案
按热度按时间xlpyo6sf1#
这是源表的问题
xyz
因为它包含分区__HIVE_DEFAULT_PARTITION__
配置单元创建具有值的分区__HIVE_DEFAULT_PARTITION__
在动态分区模式下,插入的分区值为空。隔板
__HIVE_DEFAULT_PARTITION__
与数值类型不兼容,这会导致错误,因为无法将其转换为数值类型。要删除或查询此分区,需要先将列类型更改为string:
当然,您可能需要备份表并在删除之前检查数据,然后决定如何处理这些数据。
要删除分区:
删除分区后,可以将分区列的类型改回数字类型。