具有拼花地板数据格式重新排列列的蜂房表

问题描述 投票:1回答:2

我们使用的是配置单元1.1.0,要求重新排序具有100列的巨大表之一的列,以提高用户的可读性。但是,当我们对表中的列进行重新排序时,其失败并显示以下错误。

替换列的替代方法是在表上创建视图。

hive> desc test_parquet;
OK
name                    string
age                     int
dept                    string
salary                  string
city                    string

# Partition Information
# col_name              data_type               comment

city                    string
Time taken: 0.053 seconds, Fetched: 10 row(s)
hive> ALTER TABLE test_parquet REPLACE COLUMNS (age int,name string, dept string, salary string);
OK
Time taken: 0.451 seconds
hive> desc test_parquet;
OK
age                     int
name                    string
dept                    string
salary                  string
city                    string

# Partition Information
# col_name              data_type               comment

city                    string
Time taken: 0.051 seconds, Fetched: 10 row(s)
hive> select * from test_parquet;
OK
Failed with exception java.io.IOException:java.lang.UnsupportedOperationException: Cannot inspect org.apache.hadoop.io.IntWritable
Time taken: 0.121 seconds
hive hiveql
2个回答
1
投票

ALTER TABLE ... REPLACE COLUMNS在元数据级别(元存储)上工作。新的列顺序与实际数据不匹配。对于实木复合地板,您将获得一个例外;对于文本文件,您将获得NULL值。您应该使用替代解决方案-使用视图。


0
投票

这篇文章有点老了,但是,我认为如果有类似的问题,它将使其他人受益!

您可以尝试下面的更改列方法:

[ALTER TABLE test_parquet CHANGE COLUMN age age int FIRST;会将列移至第一,否则,如果您想在特定列之后重新排序,下面将有所帮助:

ALTER TABLE test_parquet CHANGE COLUMN name name string AFTER age;

© www.soinside.com 2019 - 2024. All rights reserved.