Création de schémas externes pour Amazon Redshift Spectrum - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création de schémas externes pour Amazon Redshift Spectrum

Toutes les tables externes doivent être créées dans un schéma externe, que vous créez à l’aide d’une instruction CREATE EXTERNAL SCHEMA.

Note

Dans certaines applications, les termes base de données et schéma sont utilisés indifféremment. Dans Amazon Redshift, nous utilisons le terme schéma.

Un schéma externe Amazon Redshift fait référence à une base de données externe dans un catalogue de données externe. Vous pouvez créer la base de données externe dans Amazon Redshift, dans Amazon Athena, dans AWS Glue Data Catalog ou dans un métastore Apache Hive, tel qu’Amazon EMR. Si vous la créez une base de données externe dans Amazon Redshift, elle réside dans le catalogue de données Athena. Pour créer une base de données dans un metastore Hive, vous devez la créer dans votre application Hive.

Amazon Redshift a besoin d’une autorisation pour accéder au catalogue de données dans Athena et aux fichiers de données dans Amazon S3 en votre nom. Pour fournir cette autorisation, vous devez d'abord créer un rôle AWS Identity and Access Management (IAM). Ensuite, vous attachez le rôle à votre cluster et fournissez le Amazon Resource Name (ARN) pour le rôle dans la déclaration Amazon Redshift CREATE EXTERNAL SCHEMA. Pour de plus amples informations concernant l’autorisation, consultez Politiques IAM pour Amazon Redshift Spectrum.

Note

Si vous avez actuellement des tables externes Redshift Spectrum dans le catalogue de données Athena, vous pouvez migrer votre catalogue de données Athena vers un catalogue de données. AWS Glue Pour utiliser un catalogue de AWS Glue données avec Redshift Spectrum, vous devrez peut-être modifier vos politiques IAM. Pour plus d'informations, consultez la section Mise à niveau vers le catalogue de AWS Glue données dans le guide de l'utilisateur d'Amazon Athena.

Pour créer une base de données externe en même temps que vous créez un schéma externe, spécifiez FROM DATA CATALOG et incluez la clause CREATE EXTERNAL DATABASE dans l’instruction CREATE EXTERNAL SCHEMA.

L’exemple suivant permet de créer un schéma externe nommé spectrum_schema en utilisant la base de données externe spectrum_db.

create external schema spectrum_schema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole' create external database if not exists;

Si vous gérez votre catalogue de données à l’aide d’Athena, indiquez le nom de la base de données Athena et la région AWS dans laquelle se trouve le catalogue de données Athena.

L’exemple suivant crée un schéma externe en utilisant la base de données sampledb par défaut dans le catalogue de données Athena.

create external schema athena_schema from data catalog database 'sampledb' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole' region 'us-east-2';
Note

Le region paramètre fait référence à la AWS région dans laquelle se trouve le catalogue de données Athena, et non à l'emplacement des fichiers de données dans Amazon S3.

Si vous gérez votre catalogue de données à l’aide d’un métastore Hive, comme Amazon EMR, vos groupes de sécurité doivent être configurés pour autoriser le trafic entre les clusters.

Dans l’instruction CREATE EXTERNAL SCHEMA, spécifiez FROM HIVE METASTORE et incluez l’URI et le numéro de port du metastore. L’exemple suivant permet de créer un schéma externe en utilisant une base de données de metastore Hive nommée hive_db.

create external schema hive_schema from hive metastore database 'hive_db' uri '172.10.10.10' port 99 iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole'

Pour afficher les schémas externes correspondant à votre cluster, interrogez la table de catalogue PG_EXTERNAL_SCHEMA ou la vue SVV_EXTERNAL_SCHEMAS. L’exemple suivant interroge SVV_EXTERNAL_SCHEMAS qui joint PG_EXTERNAL_SCHEMA et PG_NAMESPACE.

select * from svv_external_schemas

Pour connaître la syntaxe complète de la commande et voir des exemples, consultez CREATE EXTERNAL SCHEMA.

Utiliser des catalogues externes dans Amazon Redshift Spectrum

Les métadonnées des bases de données externes et des tables externes d’Amazon Redshift Spectrum sont stockées dans un catalogue de données externes. Par défaut, les métadonnées de Redshift Spectrum sont stockées dans un catalogue de données Athena. Vous pouvez afficher et gérer les bases de données et les tables Redshift Spectrum dans votre console Athena.

Vous pouvez également créer et gérer des bases de données et des tables externes à l’aide du langage de définition de données (DDL) Hive en utilisant Athena ou un métastore Hive, tel que Amazon EMR.

Note

Nous vous recommandons d’utiliser Amazon Redshift pour créer et gérer des bases de données externes et des tables externes dans Redshift Spectrum.

Affichage des bases de données Redshift Spectrum dans Athena et AWS Glue

Vous pouvez créer une base de données externe en incluant la clause CREATE EXTERNAL DATABASE IF NOT EXISTS dans votre instruction CREATE EXTERNAL SCHEMA. Le cas échéant, les métadonnées de la base de données externe sont stockées dans votre catalogue de données. Tout comme les métadonnées relatives aux tables externes que vous créez qui sont qualifiées par le schéma externe sont également stockées dans votre catalogue de données .

Athena et AWS Glue maintenez un catalogue de données pour chaque support pris en charge. Région AWS Pour consulter les métadonnées d'une table, connectez-vous à Athena ou AWS Glue à la console. Dans Athena, choisissez Sources de données, votre AWS Glue, puis consultez les détails de votre base de données. Dans AWS Glue, choisissez Bases de données, votre base de données externe, puis affichez les détails de votre base de données.

Si vous créez et gérez vos tables externes à l’aide d’Athena, enregistrez la base de données en utilisant CREATE EXTERNAL SCHEMA. Par exemple, la commande suivante enregistre la base de données Athena nommée sampledb.

create external schema athena_sample from data catalog database 'sampledb' iam_role 'arn:aws:iam::123456789012:role/mySpectrumRole' region 'us-east-1';

Lorsque vous interrogez la vue système SVV_EXTERNAL_TABLES, vous voyez les tables dans la base de données Athena sampledb et également celles que vous avez créées dans Amazon Redshift.

select * from svv_external_tables;
schemaname    | tablename        | location                                               
--------------+------------------+--------------------------------------------------------
athena_sample | elb_logs         | s3://athena-examples/elb/plaintext           
athena_sample | lineitem_1t_csv  | s3://myspectrum/tpch/1000/lineitem_csv                
athena_sample | lineitem_1t_part | s3://myspectrum/tpch/1000/lineitem_partition          
spectrum      | sales            | s3://redshift-downloads/tickit/spectrum/sales          
spectrum      | sales_part       | s3://redshift-downloads/tickit/spectrum/sales_part

Enregistrement d’une base de données de metastore Apache Hive

Si vous créez des tables externes dans un metastore Apache Hive, vous pouvez les enregistrer dans Redshift Spectrum à l’aide de l’instruction CREATE EXTERNAL SCHEMA.

Dans l’instruction CREATE EXTERNAL SCHEMA, spécifiez la clause FROM HIVE METASTORE, ainsi que l’URI et le numéro de port du metastore Hive. Le rôle IAM doit inclure l’autorisation d’accéder à Amazon S3 mais ne nécessite aucune autorisation Athena. L’exemple suivant enregistre un metastore Hive.

create external schema if not exists hive_schema from hive metastore database 'hive_database' uri 'ip-10-0-111-111.us-west-2.compute.internal' port 9083 iam_role 'arn:aws:iam::123456789012:role/mySpectrumRole';

Permettre à votre cluster Amazon Redshift d’accéder à votre cluster Amazon EMR

Si votre métastore Hive se trouve dans Amazon EMR, vous devez donner à votre cluster Amazon Redshift l’accès à votre cluster Amazon EMR. Pour ce faire, vous créez un groupe de sécurité Amazon EC2. Vous autorisez ensuite tout le trafic entrant vers le groupe de sécurité EC2 à partir du groupe de sécurité de votre cluster Amazon Redshift et du groupe de sécurité de votre cluster Amazon EMR. Ensuite, vous ajoutez la sécurité EC2 à votre cluster Amazon Redshift et à votre cluster Amazon EMR.

Afficher le nom du groupe de sécurité du cluster Amazon Redshift

Pour afficher un groupe de sécurité, procédez comme suit :

  1. Connectez-vous à la console Amazon Redshift AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/redshiftv2/.

  2. Dans le menu de navigation, choisissez Clusters, puis choisissez le cluster dans la liste pour ouvrir ses détails.

  3. Choisissez Properties (Propriétés) et affichez la section Network and security settings (Paramètres de réseau et de sécurité).

  4. Recherchez votre groupe de sécurité dans VPC security group (Groupe de sécurité VPC) et prenez-en note.

Afficher le nom du groupe de sécurité du nœud principal Amazon EMR
  1. Ouvrez votre cluster Amazon EMR. Pour plus d’informations, consultez Utiliser des configurations de sécurité pour configurer la sécurité du cluster dans le Guide de gestion Amazon EMR.

  2. Sous Security and access (Sécurité et accès), notez le nom du groupe de sécurité du nœud principal Amazon EMR.

    Capture d’écran mettant en évidence le nom du groupe de sécurité du nœud principal Amazon EMR dans la console Amazon EMR.
Pour créer ou modifier un groupe de sécurité Amazon EC2 pour autoriser la connexion entre Amazon Redshift et Amazon EMR
  1. Dans le tableau de bord Amazon EC2, choisissez Security groups (Groupes de sécurité). Pour plus d'informations, consultez la section Règles relatives aux groupes de sécurité dans le guide de l'utilisateur Amazon EC2

  2. Sélectionnez Create security group (Créer un groupe de sécurité).

  3. Si vous utilisez VPC, choisissez le VPC dans lequel se trouvent vos clusters Amazon Redshift et Amazon EMR.

  4. Ajoutez une règle entrante.

    1. Pour Type, choisissez Custom TCP (TCP personnalisé).

    2. Pour Source, choisissez Personnalisé.

    3. Entrez le nom de votre groupe de sécurité Amazon Redshift.

  5. Ajoutez une autre règle entrante.

    1. Pour Type, choisissez TCP.

    2. Pour Plage de ports, entrez 9083.

      Note

      Le port par défaut pour un HMS EMR est 9083. Si votre HMS utilise un port distinct, spécifiez ce port dans la règle entrante et dans la définition de schéma externe.

    3. Pour Source, choisissez Personnalisé.

  6. Saisissez un nom et une description pour le groupe de sécurité.

  7. Sélectionnez Create security group (Créer un groupe de sécurité).

Pour ajouter le groupe de sécurité Amazon EC2 que vous avez créé dans la procédure précédente à votre cluster Amazon Redshift
  1. Dans Amazon Redshift, choisissez votre cluster.

  2. Choisissez Propriétés.

  3. Affichez les paramètres réseau et de sécurité et choisissez Edit (Modifier).

  4. Dans VPC security group (Groupe de sécurité VPC), choisissez le nouveau nom du groupe de sécurité.

  5. Sélectionnez Enregistrer les modifications.

Pour ajouter le groupe de sécurité Amazon EC2 à votre cluster Amazon EMR
  1. Dans Amazon EMR, choisissez votre cluster. Pour plus d’informations, consultez Utiliser des configurations de sécurité pour configurer la sécurité du cluster dans le Guide de gestion Amazon EMR.

  2. Sous Hardware (Matériel), choisissez le lien correspondant au nœud principal.

  3. Choisissez le lien dans la colonne ID d’instance EC2.

    Capture d’écran mettant en évidence une valeur d’identifiant d’instance Amazon EC2 dans la console Amazon EMR.
  4. Choisissez Actions, Security (Sécurité), Change security groups (Modifier les groupes de sécurité).

  5. Dans Associated sercurity groups (Groupes de sécurité associés), choisissez le nouveau groupe de sécurité, puis choisissez Add security group (Ajouter un groupe de sécurité).

  6. Choisissez Enregistrer.