更改配置单元数据库位置

w1e3prcc  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(455)

有没有办法改变数据库指向的位置?
我试过以下方法: alter database <my_db> set DBPROPERTIES('hive.warehouse.dir'='<new_hdfs_loc>'); alter database <my_db> set DBPROPERTIES('location'='<new_hdfs_loc>'); alter database <my_db> set location '<new_hdfs_loc>'; 前两个alter语句只是更改了db属性,但是数据库仍然指向相同的位置;而第三个alter语句给了我语义错误。
任何帮助都将不胜感激。

2vuwiymt

2vuwiymt1#

您可以更改数据库位置。我在Hive2.1.1(CDH6.3.3)中实现了它
CREATE DATABASE mydb LOCATION 'hdfs://<namespace_name>/mydirectory1/'DESCRIBE DATABASE mydb 查看当前位置。
那就跑吧 ALTER DATABASE mydb SET LOCATION 'hdfs://<namespace_name>/mydirectory2/' 再次运行2。然后你会看到新的位置。在创建一个示例表之后,还可以从hdfs中的该位置进行检查。

brqmpdu1

brqmpdu12#

经过反复试验,我了解到在数据库上运行alter时,hive不支持以下两种情况。
不允许更改目录位置或数据库名称。
不允许删除或取消设置以前定义的db属性。
但是,我找到了一个指向解决方法的链接,该解决方法涉及到对hivemetastore的直接db更新,并简单地移动hdfs上的目录。http://gaganonthenet.com/2015/02/23/hive-change-location-for-database-or-schema/
以前的回答不正确:
在alter之前创建的表将位于前一个位置。只有在alter之后创建的表才会放在新位置。您必须手动移动hdfs上的目录并更新表位置。看到了吗https://issues.apache.org/jira/browse/hive-1537 以及https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#languagemanualddl-有关数据库和表位置的详细信息,请参阅altertable/partitionlocation。
要更改表的位置,可以运行 ALTER TABLE <table> SET LOCATION "/path/to/new/location"; 这也可以应用于分区级别。

相关问题