Create a default directory for managed tables
You can specify a top level directory for managed tables when creating a Hive database.
Create a default directory for managed tables only after limiting CREATE
DATABASE and ALTER DATABASE statements to users having the Admin role. Only in the
Admin role can you ensure that the managed directory has the correct setup that
restricts permissions to the directory for managed tables to the
hive service user.
In addition to restricting permissions
hive user, you can further secure managed tables using
Ranger fine-grained permissions, such as row-level filtering and column
metastore.warehouse.dirto give managed tables a common location for governance policies. You specify a MANAGEDLOCATION in the
metastore.warehouse.dirto designate a single root directory for all tenant tables, managed and external.
When turned on, setting
allows tables to be in a directory outside the warehouse root directory, providing a
tenant-based common root for setting quotas and other policies.
Do not set LOCATION and MANAGEDLOCATION to the same HDFS path.
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION managed_table_path] [MANAGEDLOCATION managed_table_directory_path] [WITH DBPROPERTIES (property_name=property_value, ...)];
ALTER (DATABASE|SCHEMA) database_name SET MANAGEDLOCATION [managed_table_directory_path];
Create a database mydatabase that specifies a top level directory named sales
for managed tables.
CREATE DATABASE mydatabase MANAGEDLOCATION '/warehouse/tablespace/managed/hive/sales';
Change the abc_sales database location to the same location as mydatabase.
ALTER DATABASE abc_sales SET MANAGEDLOCATION '/warehouse/tablespace/managed/hive/sales';