Hive为我们提供了对表和数据库执行更改的功能。 ALTER TABLE命令可用于对表执行更改。我们可以修改与Hive的表架构关联的多个属性。更改表修改或更改其元数据,并且不会影响表内可用的实际数据。一般来说,当我们在创建表结构时出现一些错误时,我们会使用ALTER TABLE来更改模式的特征。我们可以对表模式执行多项操作,例如重命名表名、添加列、更改或替换列名等。
要执行以下操作,请确保您的配置单元正在运行。以下是在本地系统上启动配置单元的步骤。
第 1 步:启动所有 Hadoop 守护进程
start-dfs.sh # this will start namenode, datanode and secondary namenode
start-yarn.sh # this will start node manager and resource manager
jps # To check running daemons
第 2 步:从终端启动 hive
hive
让我们在 hive 中使用一个字符串类型的属性demo_name制作一个表演示(默认情况下,如果未指定,hive 会在其默认数据库中制作表)。
CREATE TABLE IF NOT EXISTS demo (
demo_name STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
让我们一一执行我们可以使用 ALTER TABLE 执行的每个操作。
1.重命名表名
ALTER TABLE with RENAME 用于更改配置单元中现有表的名称。
句法:
ALTER TABLE RENAME TO ;
命令:
让我们将演示中的表名重命名为customer 。
ALTER TABLE demo RENAME TO customer;
在上图中,我们可以观察到我们的表名已更改为customer 。
2. 添加列
句法:
ALTER TABLE
命令:
让我们在重命名演示后获得的客户表中添加一列联系人。
ALTER TABLE customer ADD COLUMNS ( contact BIGINT COMMENT ‘Store the customer contact number’);
我们可以使用以下命令描述该表以查看其属性。
DESCRIBE customer;
我们已成功将联系人列添加到客户表中。
3. 更改列
ALTER TABLE 中的 CHANGE 用于更改现有列或属性的名称或数据类型。
句法:
ALTER TABLE CHANGE ;
命令:
让我们将demo_name属性更改为customer_name 。
ALTER TABLE customer CHANGE demo_name customer_name STRING;
4. 更换列
REPLACE with ALTER TABLE 用于从Hive的表中删除所有现有列。在 ALTER TABLE REPLACE 语句中添加的属性或列将替换为较旧的列。
句法:
ALTER TABLE REPLACE COLUMNS (
,
,
.
.
.
);
例如,在我们的客户表中,我们有 2 个属性customer_name和contact。如果我们想删除联系人属性,查询应该如下所示。
命令:
ALTER TABLE customer REPLACE COLUMNS (
customer_name STRING
);
我们应该提到我们想要的列。
在上图中,我们可以观察到我们已经成功删除了 column contact 。 Hive没有任何 DROP 语句来删除表内的列。如果我们想删除特定的列,我们必须使用 REPLACE。