在 Impala 中使用 NULL 列创建表作为 Select
Posted
技术标签:
【中文标题】在 Impala 中使用 NULL 列创建表作为 Select【英文标题】:Create Table As Select in Impala with NULL column 【发布时间】:2021-01-07 14:24:18 【问题描述】:上下文
我从表中选择一些数据并初始化一个虚拟列以与NULL
连接。
SELECT
col_a as a,
NULL as b
FROM dummy_table;
-- Output
+---+----+
| a | b |
+---+----+
| 1 |NULL|
|...|NULL|
+---+----+
这工作并产生正确的输出。
问题
我想将该输出存储在表中以进行进一步处理。
CREATE TABLE IF NOT EXISTS temp_table STORED AS parquet AS
SELECT
col_a as a,
NULL as b
FROM dummy_table;
当第一个查询运行时,第二个查询没有运行并失败并出现以下错误:
AnalysisException:表“temp_table”的“b”列中不支持的类型“null_type”原因:TableLoadingException:表“temp_table”的“b”列中不支持的类型“null_type”
为什么在选择部分实际工作时创建表会失败?
【问题讨论】:
由于您只提供 NULL,因此数据库无法确定您想要为该新表列使用哪种数据类型。尝试将 NULL 值转换为您想要的类型 很好,这就是解决方案! :) 有趣的是,当只执行查询时 Impala 将其转换为布尔值本身,但表创建需要一个特定的类型。发表您的评论作为答案,我会接受它:) 【参考方案1】:由于您仅提供 NULL
作为值,因此您的数据库无法确定该新表列所需的数据类型。
只需将 NULL
值转换为您想要的类型。
【讨论】:
以上是关于在 Impala 中使用 NULL 列创建表作为 Select的主要内容,如果未能解决你的问题,请参考以下文章
当列数不相等而不将每个列定义为 NuLL 时,有没有办法在 Impala SQL 中合并两个表