Schémas externes dans 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.

Schémas externes dans Amazon Redshift Spectrum

Cette rubrique explique comment créer et utiliser des schémas externes avec Redshift Spectrum. Les schémas externes sont des ensembles de tables que vous utilisez comme références pour accéder à des données en dehors de votre cluster Amazon Redshift. Ces tables contiennent des métadonnées relatives aux données externes lues par 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 ou AWS Glue Data Catalogdans 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). Vous attachez ensuite le rôle à votre cluster et vous fournissez le nom de ressource Amazon (ARN) pour le rôle dans la déclaration Amazon RedshiftCREATE EXTERNAL SCHEMA. Pour de plus amples informations concernant l’autorisation, consultez IAMpolitiques relatives à 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 IAM politiques. 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, tel qu'AmazonEMR, vos groupes de sécurité doivent être configurés pour autoriser le trafic entre les clusters.

Dans l'CREATEEXTERNALSCHEMAinstruction, spécifiez FROM HIVE METASTORE et incluez le numéro du métastore URI et le numéro de port. 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 de votre cluster, interrogez la table de SCHEMA catalogue EXTERNAL PG_ _ ou la vue SVV _ EXTERNAL _SCHEMAS. L'exemple suivant interroge SVV _ EXTERNAL _SCHEMAS, qui joint PG_ _ SCHEMA et EXTERNAL NAMESPACE PG_.

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 Hive (DDL) à l'aide d'Athena ou d'un métastore Hive, tel qu'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 NOT EXISTS clause CREATE EXTERNAL DATABASE IF dans votre CREATE EXTERNAL SCHEMA instruction. 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 à l'aide de. 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 TABLES système SVV EXTERNAL _ _, vous voyez des tables dans la sampledb base de données Athena ainsi que des tables 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 métastore Apache Hive, vous pouvez les CREATE EXTERNAL SCHEMA enregistrer dans Redshift Spectrum.

Dans l'CREATEEXTERNALSCHEMAinstruction, spécifiez la FROM HIVE METASTORE clause et indiquez le métastore Hive URI et le numéro de port. Le IAM rôle doit inclure l'autorisation d'accéder à Amazon S3, mais aucune autorisation Athena n'est requise. 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 sur AmazonEMR, vous devez autoriser votre cluster Amazon Redshift à accéder à votre cluster Amazon. EMR Pour ce faire, vous devez créer un groupe EC2 de sécurité Amazon. Vous autorisez ensuite tout le trafic entrant vers le groupe de EC2 sécurité depuis le groupe de sécurité de votre cluster Amazon Redshift et le groupe de sécurité de votre cluster EMR Amazon. Vous ajoutez ensuite la EC2 sécurité à la fois à votre cluster Amazon Redshift et à votre cluster AmazonEMR.

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. Trouvez votre groupe de VPCsécurité dans le groupe de sécurité et prenez-en note.

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

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

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

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

  3. Si vous en utilisezVPC, choisissez VPC celui dans lequel se trouvent vos EMR clusters Amazon Redshift et Amazon.

  4. Ajoutez une règle entrante.

    1. Dans Type, choisissez Personnalisé TCP.

    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, sélectionnez TCP.

    2. Pour Plage de ports, entrez 9083.

      Note

      Le port par défaut pour un EMR HMS est 9083. Si vous HMS utilisez un port différent, spécifiez-le dans la règle entrante et dans la définition du 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 EC2 de sécurité Amazon que vous avez créé lors de 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 le groupe VPC de sécurité, choisissez le nouveau nom du groupe de sécurité.

  5. Sélectionnez Enregistrer les modifications.

Pour ajouter le groupe EC2 de sécurité Amazon à votre EMR cluster Amazon
  1. Dans AmazonEMR, choisissez votre cluster. Pour plus d'informations, consultez la section Utiliser les configurations de sécurité pour configurer la sécurité des clusters dans le Amazon EMR Management Guide.

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

  3. Choisissez le lien dans la colonne ID de l'EC2instance.

    Capture d'écran mettant en évidence une valeur d'identifiant d'EC2instance Amazon dans la EMR console Amazon.
  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 Save (Enregistrer).