Hive 在Apache配置单元中加载更改列
我有一个配置单元表,按日期字段分区,每天都会加载。我们收到一个请求,要求在末尾添加一个新列,并将数据加载到同一个配置单元表中。在保留现有数据时,是否有更好的方法来处理此列更改请求Hive 在Apache配置单元中加载更改列,hive,Hive,我有一个配置单元表,按日期字段分区,每天都会加载。我们收到一个请求,要求在末尾添加一个新列,并将数据加载到同一个配置单元表中。在保留现有数据时,是否有更好的方法来处理此列更改请求 是否需要删除现有表中的数据,并使用新列重新创建表并加载数据。您以何种格式保存数据? 如果您使用的是avro格式,只需在.avsc字段中添加新字段并设置默认值: { "name": "yourData", "type": ["string", "null"], "default": "null" } 如果您将数据
是否需要删除现有表中的数据,并使用新列重新创建表并加载数据。您以何种格式保存数据? 如果您使用的是avro格式,只需在.avsc字段中添加新字段并设置默认值:
{
"name": "yourData",
"type": ["string", "null"],
"default": "null"
}
如果您将数据存储为csv,那么它似乎有点复杂。
用alter table更改表格在我的情况下不起作用(我不知道为什么)。
所以我删除了这个表,用新的列重新创建了它,并添加了分区,它就工作了。
让舒尔将您的表格设置为外部表格,这样您就不必删除数据
例如:
蜂巢:
你必须做的是:
ALTER TABLE somData SET TBLPROPERTIES('EXTERNAL'='TRUE');
drop table somData;
create table somData (
anid int
,astring String
,extractDate date
,anotherDate date
,someInt int
)
PARTITIONED BY(cusPart STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TextFile location "/your/location";
ALTER TABLE someData ADD IF NOT EXISTS PARTITION (cusPart='foo') LOCATION '/your/paritioned/data';
create table somData (
anid int
,astring String
,extractDate date
)
PARTITIONED BY(cusPart STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TextFile location "/your/location";
ALTER TABLE somData SET TBLPROPERTIES('EXTERNAL'='TRUE');
drop table somData;
create table somData (
anid int
,astring String
,extractDate date
,anotherDate date
,someInt int
)
PARTITIONED BY(cusPart STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TextFile location "/your/location";
ALTER TABLE someData ADD IF NOT EXISTS PARTITION (cusPart='foo') LOCATION '/your/paritioned/data';