📜  Hive – 更改数据库

📅  最后修改于: 2021-10-27 06:42:55             🧑  作者: Mango

Apache Hive带有一个已创建的名为default 的数据库。无法在Hive更改默认数据库,因为它受到限制。对于每个成功创建的数据库,都可以根据用户要求进行更改。

对数据库进行更改以更改其现有属性或特征。 ALTER命令可用于对数据库、表进行更改。

要执行以下操作,请确保您的配置单元正在运行。以下是在本地系统上启动配置单元的步骤。

第 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

ALTER 数据库命令 1

有了。。的帮助 在下面的命令中,我们可以添加数据库属性或修改我们添加的属性。 DBPROPERTIES采用键值对形式的多个参数。

句法:

DATABASE 或 SCHEMA 是同一个东西,我们可以使用任何名称。 ALTER 中的 SCHEMA 在 hive 0.14.0 及更高版本中添加。

ALTER (DATABASE|SCHEMA)  SET DBPROPERTIES (''='',..); 

例子:

第 1 步:创建一个名为 student 的数据库

CREATE DATABASE student;

第 2 步:使用 ALTER 向数据库添加属性

ALTER DATABASE student SET DBPROPERTIES ( ' owner ' = ' GFG' , ' Date ' = ' 2020-5-6 ');

第三步:描述数据库看效果

DESCRIBE DATABASE EXTENDED student;

第四步:让我们改变现有的属性,看看效果。在我们的示例中,我们将所有者从GFG更改为Geeks

ALTER DATABASE student SET DBPROPERTIES ( ' owner ' = ' Geeks ' , ' Date ' = ' 2020-5-6 ');

我们已经成功地使用 ALTER 覆盖了该属性。

ALTER 数据库命令 2

借助以下命令,我们可以更改HDFS上的数据库目录。带有 ALTER 的 LOCATION 仅在Hive 2.2.1、2.4.0 及更高版本中可用。我们应该记住的一件事是,更改数据库位置不会将数据传输到新指定的位置。它只更改父目录位置,新添加的数据将添加到这个新的 HDFS 位置。

句法:

ALTER (DATABASE|SCHEMA)  SET LOCATION 'Path_on_HDFS';

例子:

步骤 1:描述数据库学生以查看其父目录。默认情况下,hive 将其数据存储在 HDFS 上的/user/hive/warehouse

DESCRIBE DATABASE EXTENDED student;

第 2 步:使用 ALTER 更改父目录位置(注意:/hive_db 是我的 HDFS 上的可用目录)。

ALTER DATABASE student SET LOCATION 'hdfs://localhost:9000/hive_db';

第 3 步:描述数据库学生查看位置是否被覆盖。

DESCRIBE DATABASE EXTENDED student;

我们已成功更改学生数据库的位置。现在,您将添加到此数据库的任何表都将在 /hive_db 中创建。

ALTER 数据库命令 3

以下命令用于设置或更改用户名及其角色。 SET OWNER 将当前用户所有权转移给新用户或新角色。默认情况下,创建数据库的用户被设置为该数据库的所有者。

句法:

ALTER DATABASE  SET OWNER [USER|ROLE] user_name or role_name;

例子:

让我们更改与学生数据库关联的用户名。

DESCRIBE DATABASE EXTENDED student;        # we have used it to see the current user info 

ALTER DATABASE student SET OWNER USER Ram; # with this we have changed the db owner from dikshant
                                             to Ram  

现在,将 ram 的角色更改为 admin。

ALTER DATABASE student SET OWNER ROLE admin;