Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique une approche permettant de continuer à utiliser le metastore Hive hérité par espace de travail lorsque votre espace de travail Azure Databricks est activé pour le catalogue Unity.
Si votre espace de travail était en service avant qu’il n’ait été activé pour le catalogue Unity, il dispose probablement d’un metastore Hive qui contient des données que vous souhaiterez peut-être continuer à utiliser. Cet article explique comment continuer à utiliser des tables inscrites dans un metastore Hive.
Important
Le metastore Hive par espace de travail est une fonctionnalité héritée et les instructions fournies dans cet article représentent les flux de travail hérités.
Les tables du metastore Hive ne bénéficient pas de l’ensemble complet de fonctionnalités de sécurité et de gouvernance fournies par le catalogue Unity, telles que l’audit intégré, la traçabilité et le contrôle d’accès. Databricks vous recommande de migrer ces tables et les charges de travail qui les référencent au catalogue Unity et de désactiver l’accès direct au metastore Hive.
Deux chemins de migration sont disponibles :
Mettez à niveau toutes les tables inscrites dans le metastore Hive vers Unity Catalog.
Fédérez votre metastore Hive au catalogue Unity à l’aide de la fédération du metastore Hive pour une approche plus progressive. La fédération du métastore Hive crée un catalogue externe dans Unity Catalog, qui reflète le métastore Hive.
Consultez Mettre à niveau des espaces de travail Azure Databricks vers le catalogue Unity.
Interroger le metastore Hive hérité dans le catalogue Unity
Le metastore Unity Catalog est additif, ce qui signifie qu’il peut être utilisé avec le metastore Hive par espace de travail dans Azure Databricks. Le metastore Hive s’affiche sous la forme d’un catalogue de niveau supérieur appelé hive_metastore
dans l’espace de noms à trois niveaux.
Par exemple, vous pouvez faire référence à une table nommée sales_raw
dans le schéma sales
dans le metastore Hive hérité à l’aide de la notation suivante :
SQL
SELECT * from hive_metastore.sales.sales_raw;
Python
display(spark.table("hive_metastore.sales.sales_raw"))
R
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
Langage de programmation Scala
display(spark.table("hive_metastore.sales.sales_raw"))
Vous pouvez également spécifier le catalogue et le schéma à l’aide d’une instruction USE
:
SQL
USE hive_metastore.sales;
SELECT * from sales_raw;
Python
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
R
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
Langage de programmation Scala
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
Contrôle d’accès dans le catalogue Unity par rapport à l’ancien metastore Hive
Si vous avez configuré le contrôle d’accès aux tables hérité sur le metastore Hive, Databricks continue d’appliquer ces contrôles d’accès pour les données du hive_metastore
catalogue pour les clusters s’exécutant en mode d’accès standard.
Le modèle d’accès au catalogue Unity diffère légèrement des contrôles d’accès hérités :
-
Metastore : Le catalogue Unity est un objet au niveau du compte et le metastore Hive est un objet au niveau de l’espace de travail. Les autorisations définies dans le catalogue
hive_metastore
font toujours référence aux utilisateurs et groupes locaux de l’espace de travail. - Groupes de compte : les stratégies de contrôle d’accès dans Unity Catalog sont appliquées aux groupes de compte, tandis que les stratégies de contrôle d’accès pour le metastore Hive sont appliquées aux groupes au niveau de l’espace de travail. Consultez Sources de groupe.
-
USE CATALOG
etUSE SCHEMA
les autorisations sont requises sur le catalogue et le schéma pour toutes les opérations sur les objets à l’intérieur du catalogue ou du schéma : indépendamment des privilèges d’un principal sur une table, le principal doit également avoir leUSE CATALOG
privilège sur son catalogue parent pour accéder au schéma et leUSE SCHEMA
privilège d’accéder aux objets au sein du schéma. En revanche, avec les contrôles d’accès aux tables au niveau de l’espace de travail, le fait d’octroyerUSAGE
sur le catalogue racine accorde automatiquementUSAGE
sur toutes les bases de données, maisUSAGE
sur le catalogue racine n’est pas obligatoire. -
Vues : Dans le catalogue Unity, le propriétaire d’une vue n’a pas besoin d’être propriétaire des tables et vues référencées de la vue. Disposer des privilèges
SELECT
suffit, ainsi que des privilègesUSE SCHEMA
sur le schéma parent des affichages etUSE CATALOG
sur le catalogue parent. Avec les contrôles d’accès aux tables au niveau de l’espace de travail, le propriétaire d’une vue doit être propriétaire de toutes les tables et vues référencées. -
Aucune prise en charge de
ANY FILE
ouANONYMOUS FUNCTION
: Dans Unity Catalog, il n’existe aucun concept d’unANY FILE
ouANONYMOUS FUNCTION
sécurisable qui pourrait permettre à un utilisateur non privilégié d’exécuter du code privilégié. -
Aucune prise en charge pour
DENY
: le modèle de privilège du catalogue Unity est basé sur le principe du moindre privilège. Les privilèges qui ne sont pas accordés sont implicitement refusés. -
Aucune autorisation
READ_METADATA
: Unity Catalog gère l’accès aux métadonnées de manière différente. Consultez Privilèges Unity Catalog et objets sécurisables.
Jointures entre les objets Unity Catalog et metastore Hive
En utilisant la notation de "namespace" à trois niveaux, vous pouvez joindre des données dans un metastore Unity Catalog avec des données dans le metastore Hive hérité.
Remarque
Une jointure avec des données dans le metastore Hive hérité ne fonctionne que sur l’espace de travail où résident ces données. Si vous essayez d’exécuter une telle jointure dans un autre espace de travail, une erreur se produit. Azure Databricks vous recommande de mettre à niveau les tables et les vues héritées vers Unity Catalog.
L’exemple suivant joint les résultats de la table sales_current
dans le metastore Hive hérité avec la table sales_historical
dans le metastore Unity Catalog lorsque les champs order_id
sont égaux.
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;
Python
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))
Langage de programmation 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")
))
Catalogue par défaut
Un catalogue par défaut est configuré dans chaque espace de travail dans lequel Unity Catalog est activé.
Si vous omettez le nom du catalogue de premier niveau lorsque vous effectuez des opérations de données, le catalogue par défaut est utilisé.
Le catalogue par défaut initialement configuré dans votre espace de travail dépend de la façon dont Unity Catalog été activé dans votre espace de travail :
- Si Unity Catalog a été activé dans votre espace de travail de façon automatique, le catalogue d’espace de travail a été défini comme catalogue par défaut. Consultez l’article Activation automatique de Unity Catalog.
- Si Unity Catalog a été activé dans votre espace de travail de façon manuelle, le catalogue
hive_metastore
a été défini comme catalogue par défaut.
Si vous passez du metastore Hive au catalogue Unity au sein d’un espace de travail existant, il est judicieux d’utiliser hive_metastore
comme catalogue par défaut pour éviter d’affecter le code existant qui fait référence au metastore Hive, sauf si vous avez entièrement migré hors du metastore Hive.
Pour savoir comment obtenir le catalogue par défaut et passer de l’un à l’autre, consultez Gérer le catalogue par défaut
Autorisations d’accès aux données étendues au cluster
Lors de l’utilisation du metastore Hive avec Unity Catalog, le profil d’instance du cluster est utilisé pour accéder aux données du metastore Hive, mais pas aux données inscrites dans Unity Catalog.
Si les utilisateurs accèdent à des chemins qui se trouvent en dehors de Unity Catalog (comme un chemin non inscrit en tant que tableau ou emplacement externe), alors les autorisations d’accès au cluster sont utilisées.
Consultez Connexion à Azure Data Lake Storage et Blob Storage.