Étape 3 : Création d'un schéma externe et d'une table externe
Créez des tables externes dans un schéma externe. Le schéma externe référence une base de données dans le catalogue de données externe et fournit le rôle IAM ARN qui autorise votre cluster à accéder à Amazon S3 en votre nom. Vous pouvez créer une base de données externe dans un catalogue de données Amazon Athena, AWS Glue Data Catalog, ou un métastore Apache Hive, tel qu'Amazon EMR. Pour cet exemple, vous créez la base de données externe dans un catalogue de données Amazon Athena lorsque vous créez le schéma externe Amazon Redshift. Pour de plus amples informations, consultez Création de schémas externes pour Amazon Redshift Spectrum.
Pour créer un schéma externe et une table externe
-
Pour créer un schéma externe, remplacez l'ARN de rôle IAM dans la commande ci-après par l'ARN de rôle que vous avez créé à l'étape 1. Ensuite, exécutez la commande dans votre client SQL.
create external schema myspectrum_schema from data catalog database 'myspectrum_db' iam_role 'arn:aws:iam::123456789012:role/myspectrum_role' create external database if not exists;
-
Pour créer une table externe, exécutez la commande CREATE EXTERNAL TABLE suivante.
Note
Votre cluster et le compartiment Amazon S3 doivent se trouver dans la même Région AWS. Pour cet exemple de commande CREATE EXTERNAL TABLE, le compartiment Amazon S3 contenant les données d'exemple est situé dans la Région AWS USA Est (Virginie du Nord). Pour voir les données sources, téléchargez le fichier
sales_ts.000
. Vous pouvez modifier cet exemple pour l'exécuter dans une autre Région AWS. Créez un compartiment Amazon S3 dans la Région AWS de votre choix. Copiez les données de vente à l'aide d'une commande de copie Amazon S3. Ensuite, mettez à jour l'option d'emplacement dans l'exemple de commande
CREATE EXTERNAL TABLE
sur votre compartiment.aws s3 cp s3://redshift-downloads/tickit/spectrum/sales/ s3://
bucket-name
/tickit/spectrum/sales/ --copy-props none --recursiveLa sortie de la commande de copie Amazon S3 confirme que le fichier a été copié dans
bucket-name
, dans la Région AWS de votre choix.copy: s3://redshift-downloads/tickit/spectrum/sales/sales_ts.000 to s3://
bucket-name
/tickit/spectrum/sales/sales_ts.000create external table myspectrum_schema.sales( salesid integer, listid integer, sellerid integer, buyerid integer, eventid integer, dateid smallint, qtysold smallint, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp) row format delimited fields terminated by '\t' stored as textfile location 's3://redshift-downloads/tickit/spectrum/sales/' table properties ('numRows'='172000');