Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se explica un enfoque para seguir usando el metastore heredado de Hive por área de trabajo cuando el área de trabajo de Azure Databricks está habilitada para Unity Catalog.
Si el área de trabajo estaba en servicio antes de que se habilitara para el catálogo de Unity, es probable que tenga un metastore de Hive que contenga datos que podría querer seguir usando. En este artículo se describe cómo seguir trabajando con tablas registradas en un metastore de Hive.
Importante
El metastore de Hive por área de trabajo es una característica heredada y las instrucciones proporcionadas en este artículo representan flujos de trabajo heredados.
Las tablas del metastore de Hive no se benefician del conjunto completo de características de seguridad y gobernanza proporcionadas por Unity Catalog, como la auditoría integrada, el linaje y el control de acceso. Databricks recomienda migrar esas tablas y las cargas de trabajo que hacen referencia a Unity Catalog y deshabilitar el acceso directo a la metastore de Hive.
Hay dos rutas de migración disponibles:
Actualice todas las tablas registradas en el metastore de Hive al catálogo de Unity.
Federar el metastore de Hive a Unity Catalog mediante la federación de metastore de Hive para obtener un enfoque más gradual. La federación del metastore de Hive crea un catálogo externo en Unity Catalog que refleja el metastore de Hive.
Consulte Actualizar un área de trabajo de Azure Databricks a Unity Catalog.
Consulta del metastore de Hive heredado en el catálogo de Unity
El repositorio metastore de Unity Catalog es aditivo, lo cual significa que se puede usar con el metastore de Hive por área de trabajo en Azure Databricks. El metastore de Hive aparece como un catálogo de nivel superior denominado hive_metastore
en el espacio de nombres de tres niveles.
Por ejemplo, puede hacer referencia a una tabla llamada sales_raw
en el esquema sales
del metastore de Hive heredado mediante la notación siguiente:
SQL
SELECT * from hive_metastore.sales.sales_raw;
Pitón
display(spark.table("hive_metastore.sales.sales_raw"))
R
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
Scala
display(spark.table("hive_metastore.sales.sales_raw"))
También puede especificar el catálogo y el esquema con una instrucción USE
:
SQL
USE hive_metastore.sales;
SELECT * from sales_raw;
Pitón
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
R
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
Scala
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
Control de acceso en Unity Catalog en comparación con el metastore de Hive heredado
Si ha configurado el control de acceso a tablas heredado en el metastore de Hive, Databricks seguirá aplicando esos controles de acceso para los datos del catálogo hive_metastore
en los clústeres que se ejecutan en el modo de acceso estándar.
El modelo de acceso al catálogo de Unity difiere ligeramente de los controles de acceso heredados:
-
Metastore: el catálogo de Unity es un objeto de nivel de cuenta y el metastore de Hive es un objeto de nivel de área de trabajo. Los permisos definidos en el catálogo
hive_metastore
siempre hacen referencia a los usuarios y grupos locales del área de trabajo. - Grupos de cuentas: las directivas de control de acceso de Unity Catalog se aplican a los grupos de cuentas, mientras que las directivas de control de acceso del metastore de Hive se aplican a los grupos de área de trabajo local. Consulte Fuentes de grupo.
-
USE CATALOG
Los permisos yUSE SCHEMA
son necesarios en el catálogo y el esquema para todas las operaciones en objetos dentro del catálogo o esquema: Independientemente de los privilegios de un principal en una tabla, el principal también debe tener elUSE CATALOG
privilegio en su catálogo primario para acceder al esquema y elUSE SCHEMA
privilegio para acceder a los objetos dentro del esquema. Por otro lado, con los controles de acceso a tablas de nivel de área de trabajo, al concederUSAGE
en el catálogo raíz, se concedeUSAGE
automáticamente en todas las bases de datos, peroUSAGE
no es necesario en el catálogo raíz. -
Vistas: en el catálogo de Unity, el propietario de una vista no necesita ser propietario de las vistas y tablas a las que se hace referencia. Es suficiente con tener el privilegio
SELECT
, junto conUSE SCHEMA
en el esquema primario de las vistas yUSE CATALOG
en el catálogo primario. Con los controles de acceso a tablas a nivel de área de trabajo, el propietario de una vista debe ser propietario de todas las tablas y vistas referenciadas. -
No se admite
ANY FILE
oANONYMOUS FUNCTION
: en Unity Catalog, no hay ningún concepto deANY FILE
niANONYMOUS FUNCTION
protegible que pueda permitir que un usuario sin privilegios ejecute código con privilegios. -
No se admite
DENY
: el modelo de privilegios del catálogo de Unity se basa en el principio de privilegios mínimos. Los privilegios que no se conceden se deniegan implícitamente. -
Sin privilegio
READ_METADATA
: Unity Catalog administra el acceso para ver los metadatos de otra manera. Consulte Privilegios de Unity Catalog y objetos protegibles.
Combinaciones entre objetos de Unity Catalog y metastore de Hive
Mediante el uso de la notación de espacio de nombres de tres niveles, puede unir los datos de un metastore de Unity Catalog con los datos del metastore de Hive heredado.
Nota:
Una unión con datos del metastore de Hive heredado solo funcionará en el área de trabajo donde residan esos datos. Al intentar ejecutar esa unión en otra área de trabajo, se produce un error. Azure Databricks recomienda actualizar las tablas y vistas heredadas a Unity Catalog.
En el ejemplo siguiente se unen los resultados de la tabla sales_current
del metastore de Hive heredado con los de la tabla sales_historical
del metastore de Unity Catalog cuando los campos order_id
son iguales.
SQL
SELECT * FROM hive_metastore.sales.sales_current
JOIN main.shared_sales.sales_historical
ON hive_metastore.sales.sales_current.order_id = main.shared_sales.sales_historical.order_id;
Pitón
dfCurrent = spark.table("hive_metastore.sales.sales_current")
dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
other = dfHistorical,
on = dfCurrent.order_id == dfHistorical.order_id
))
R
library(SparkR)
dfCurrent = tableToDF("hive_metastore.sales.sales_current")
dfHistorical = tableToDF("main.shared_sales.sales_historical")
display(join(
x = dfCurrent,
y = dfHistorical,
joinExpr = dfCurrent$order_id == dfHistorical$order_id))
Scala
val dfCurrent = spark.table("hive_metastore.sales.sales_current")
val dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
right = dfHistorical,
joinExprs = dfCurrent("order_id") === dfHistorical("order_id")
))
Catálogo predeterminado
Se configura un catálogo predeterminado para cada área de trabajo habilitada para Unity Catalog.
Si omite el nombre del catálogo de nivel superior cuando lleva a cabo operaciones de datos, se asume el uso del catálogo predeterminado.
El catálogo predeterminado que se configuró inicialmente para el área de trabajo depende de cómo se haya habilitado el área de trabajo para Unity Catalog:
- Si el área de trabajo se ha habilitado automáticamente para Unity Catalog, el catálogo de áreas de trabajo se ha establecido como catálogo predeterminado. Consulte Habilitación automática de Unity Catalog.
- Si el área de trabajo se ha habilitado para Unity Catalog manualmente, el catálogo
hive_metastore
se ha establecido como catálogo predeterminado.
Si va a realizar la transición de la metastore de Hive al catálogo de Unity dentro de un área de trabajo existente, tiene sentido usar hive_metastore
como catálogo predeterminado para evitar que afecte al código existente que haga referencia al metastore de Hive, a menos que haya migrado completamente fuera del metastore de Hive.
Para obtener información sobre cómo obtener y cambiar el catálogo predeterminado, consulte Administración del catálogo predeterminado.
Permisos de acceso a datos con ámbito de clúster
Cuando se usa el metastore de Hive junto con Unity Catalog, las credenciales de acceso de datos asociadas con el clúster se usan para acceder a los datos del metastore de Hive, pero no a los datos registrados en Unity Catalog.
Si los usuarios acceden a las rutas de acceso que están fuera de Unity Catalog (por ejemplo, una ruta de acceso no registrada como una tabla o una ubicación externa), se usan las credenciales de acceso asignadas al clúster.