CREATE EXTERNAL TABLE - 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.

CREATE EXTERNAL TABLE

Crée une table externe dans le schéma spécifié. Toutes les tables externes doivent être créées dans un schéma externe. Le chemin de recherche n’est pas pris en charge pour les schémas et tables externes. Pour plus d’informations, consultez CREATE EXTERNAL SCHEMA.

Outre les tables externes créées à l'aide de la commande CREATE EXTERNAL TABLE, Amazon Redshift peut faire référence à des tables externes définies dans un AWS Lake Formation catalogue AWS Glue ou un métastore Apache Hive. Utilisez la commande CREATE EXTERNAL SCHEMA pour enregistrer une base de données externe définie dans un catalogue de données externe, et faites en sorte que les tables externes puissent être utilisées dans Amazon Redshift. Si la table externe existe dans un AWS Lake Formation catalogue AWS Glue ou un métastore Hive, vous n'avez pas besoin de créer la table à l'aide de CREATE EXTERNAL TABLE. Pour afficher les tables externes, interrogez la vue système SVV_EXTERNAL_TABLES.

En exécutant la commande CREATE EXTERNAL TABLE AS, vous pouvez créer une table externe basée sur la définition de colonne d’une requête et écrire les résultats de cette requête dans Amazon S3. Les résultats sont au format Apache Parquet ou au format texte délimité. Si la table externe possède une ou plusieurs clés de partition, Amazon Redshift partitionne les nouveaux fichiers en fonction de ces clés de partition et enregistre automatiquement les nouvelles partitions dans le catalogue externe. Pour plus d’informations sur la commande CREATE EXTERNAL TABLE AS, consultez Notes d’utilisation.

Vous pouvez interroger une table externe en utilisant la même syntaxe SELECT que celle que vous utilisez avec d’autres tables Amazon Redshift. Vous pouvez également utiliser la syntaxe INSERT pour écrire de nouveaux fichiers à l’emplacement de la table externe sur Amazon S3. Pour plus d'informations, consultez INSERT (table externe).

Pour créer une vue avec une table externe, incluez la clause WITH NO SCHEMA BINDING dans l’instruction CREATE VIEW.

Vous ne pouvez pas exécuter CREATE EXTERNAL TABLE à l’intérieur d’une transaction (BEGIN ... END). Pour plus d’informations sur les transactions, consultez Isolement sérialisable.

Privilèges requis

Pour créer des tables externes, vous devez être le propriétaire du schéma externe ou un superutilisateur. Pour transférer la propriété d’un schéma externe, utilisez ALTER SCHEMA pour modifier le propriétaire. L’accès aux tables externes est contrôlé par l’accès au schéma externe. Vous ne pouvez pas accorder GRANT ni révoquer REVOKE des autorisations pour une table externe. A la place, accordez ou révoquez USAGE sur le schéma externe.

Vous trouverez dans les Notes d’utilisation des informations complémentaires sur les autorisations spécifiques des tables externes.

Syntaxe

CREATE EXTERNAL TABLE
external_schema.table_name
(column_name data_type [, …] )
[ PARTITIONED BY (col_name data_type [, … ] )]
[ { ROW FORMAT DELIMITED row_format |
  ROW FORMAT SERDE 'serde_name'
  [ WITH SERDEPROPERTIES ( 'property_name' = 'property_value' [, ...] ) ] } ]
STORED AS file_format
LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }
[ TABLE PROPERTIES ( 'property_name'='property_value' [, ...] ) ]

Voici la syntaxe de la commande CREATE EXTERNAL TABLE AS.

CREATE EXTERNAL TABLE
external_schema.table_name
[ PARTITIONED BY (col_name [, … ] ) ]
[ ROW FORMAT DELIMITED row_format ]
STORED AS file_format
LOCATION { 's3://bucket/folder/' }
[ TABLE PROPERTIES ( 'property_name'='property_value' [, ...] ) ]
 AS
 { select_statement }
         

Paramètres

schéma_externe.nom_table

Nom de la table à créer, qualifié par un nom de schéma externe. Les tables externes doivent être créées dans un schéma externe. Pour plus d'informations, consultez CREATE EXTERNAL SCHEMA.

La longueur maximale d’un nom de table est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Vous pouvez utiliser des caractères multioctets UTF-8 jusqu’à un maximum de quatre octets. Amazon Redshift impose une limite de 9 900 tables par cluster, y compris les tables temporaires définies par l’utilisateur et les tables temporaires créées par Amazon Redshift lors du traitement des requêtes ou de la maintenance du système. Le cas échéant, le nom de la table peut être qualifié avec le nom de la base de données. Dans l’exemple suivant, le nom de base de données est spectrum_db, le nom du schéma externe est spectrum_schema et le nom de la table est test.

create external table spectrum_db.spectrum_schema.test (c1 int) stored as parquet location 's3://mybucket/myfolder/';

Si la base de données ou le schéma spécifié n’existe pas, la table n’est pas créée et l’instruction renvoie une erreur. Vous ne pouvez pas créer de tables ni de vues dans les bases de données système template0, template1, padb_harvest ou sys:internal.

Le nom de la table doit être un nom unique pour le schéma spécifié.

Pour plus d’informations sur les noms valides, consultez Noms et identificateurs.

( nom_colonne type_données )

Nom et type de données de chaque colonne en cours de création.

La longueur maximale d’un nom de colonne est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Vous pouvez utiliser des caractères multioctets UTF-8 jusqu’à un maximum de quatre octets. Vous ne pouvez pas spécifier de noms de colonne "$path" ou "$size". Pour plus d’informations sur les noms valides, consultez Noms et identificateurs.

Par défaut, Amazon Redshift crée les tables externes avec les pseudo-colonnes $path et $size. Vous pouvez désactiver la création de pseudo-colonnes d’une séance en définissant le paramètre de configuration spectrum_enable_pseudo_columns avec la valeur false. Pour plus d'informations, consultez Pseudocolonnes .

Si les pseudo-colonnes sont activées, le nombre maximal de colonnes que vous pouvez définir dans une seule table est 1 598. Si les pseudo-colonnes ne sont pas activées, le nombre maximal de colonnes que vous pouvez définir dans une seule table est 1 600.

Si vous créez une grande table, assurez-vous que la liste de colonnes ne dépasse pas les limites de largeur de ligne pour les résultats intermédiaires pendant le traitement des charges et des requêtes. Pour plus d'informations, consultez Notes d’utilisation.

Pour une commande CREATE EXTERNAL TABLE AS, aucune liste de colonnes n’est requise, car les colonnes sont dérivées de la requête.

data_type

Les encodages Types de données suivants sont pris en charge :

  • SMALLINT (INT2)

  • INTEGER (INT, INT4)

  • BIGINT (INT8)

  • DECIMAL (NUMERIC)

  • REAL (FLOAT4)

  • DOUBLE PRECISION (FLOAT8)

  • BOOLEAN (BOOL)

  • CHAR (CHARACTER)

  • VARCHAR (CHARACTER VARYING)

  • VARBYTE (CHARACTER VARYING) : peut être utilisé avec des fichiers de données Parquet et ORC, et uniquement avec des tables non partitionnées.

  • DATE : peut être utilisé uniquement avec du texte ou des fichiers de données Parquet ou ORC, ou comme colonne de partition.

  • TIMESTAMP

Pour DATE, vous pouvez utiliser les formats décrits ci-dessous. Pour les valeurs de mois représentées à l’aide de chiffres, les formats suivants sont pris en charge :

  • mm-dd-yyyy Par exemple, 05-01-2017. Il s’agit de l’option par défaut.

  • yyyy-mm-dd, où l’année est représentée par plus de deux chiffres. Par exemple, 2017-05-01.

Pour les valeurs de mois représentées à l’aide de l’abréviation de trois lettres, les formats suivants sont pris en charge :

  • mmm-dd-yyyy Par exemple, may-01-2017. Il s’agit de l’option par défaut.

  • dd-mmm-yyyy, où l’année est représentée par plus de deux chiffres. Par exemple, 01-may-2017.

  • yyyy-mmm-dd, où l’année est représentée par plus de deux chiffres. Par exemple, 2017-may-01.

Pour les valeurs d’années qui sont constamment inférieures à 100, l’année est calculée de la manière suivante :

  • Si l’année est inférieure à 70, elle est calculée comme l’année plus 2000. Par exemple, la date 05-01-17 au format mm-dd-yyyy est convertie au format 05-01-2017.

  • Si l’année est inférieure à 100 et supérieure à 69, l’année est calculée comme l’année plus 1900. Par exemple, la date 05-01-89 au format mm-dd-yyyy est convertie au format 05-01-1989.

  • Pour les valeurs d’année représentées par deux chiffres, ajoutez les zéros de tête pour représenter l’année en quatre chiffres.

Les valeurs d’horodatage dans les fichiers texte doivent être au format yyyy-mm-dd HH:mm:ss.SSSSSS, comme illustré par la valeur d’horodatage suivante : 2017-05-01 11:30:59.000000.

La longueur d’une colonne VARCHAR est définie en octets et non pas en caractères. Par exemple, une colonne VARCHAR(12) peut contenir 12 caractères codés sur un octet ou 6 caractères codés sur deux octets. Lorsque vous interrogez une table externe, les résultats sont tronqués pour s’adapter à la taille définie de la colonne sans renvoyer d’erreur. Pour plus d'informations, consultez Stockage et plages.

Pour de meilleures performances, nous vous recommandons de spécifier la plus petite taille de colonne adaptée à vos données. Pour rechercher la taille maximale en octets des valeurs d’une colonne, utilisez la fonction OCTET_LENGTH. L’exemple suivant renvoie la taille maximale des valeurs de la colonne EMAIL.

select max(octet_length(email)) from users; max --- 62
PARTITIONED BY (nom_col type_données [, … ] )

Clause qui définit une table partitionnée avec une ou plusieurs colonnes de partition. Un répertoire de données distinct est utilisé pour chaque combinaison spécifiée, ce qui dans certains cas améliore la performance des requêtes. Les colonnes partitionnées n’existent pas au sein même des données de la table. Si la valeur de nom_col est identique à celle d’une colonne de table, une erreur est renvoyée.

Après avoir créé une table partitionnée, modifiez-la à l’aide d’une instruction ALTER TABLE ... ADD PARTITION pour enregistrer de nouvelles partitions dans le catalogue externe. Lorsque vous ajoutez une partition, vous définissez l’emplacement du sous-dossier sur Amazon S3 qui contient les données de partition.

Par exemple, si la table spectrum.lineitem_part est définie avec PARTITIONED BY (l_shipdate date), exécutez la commande ALTER TABLE suivante pour ajouter une partition.

ALTER TABLE spectrum.lineitem_part ADD PARTITION (l_shipdate='1992-01-29') LOCATION 's3://spectrum-public/lineitem_partition/l_shipdate=1992-01-29';

Si vous utilisez la commande CREATE EXTERNAL TABLE AS, vous n’avez pas besoin d’exécuter la commande ALTER TABLE...ADD PARTITION. Amazon Redshift enregistre automatiquement les nouvelles partitions dans le catalogue externe. Amazon Redshift écrit également automatiquement les données correspondantes dans les partitions d’Amazon S3 en fonction de la ou des clés de partition définies dans la table.

Pour afficher les partitions, interrogez la vue système SVV_EXTERNAL_PARTITIONS.

Note

Pour une commande CREATE EXTERNAL TABLE AS, vous n’avez pas besoin de spécifier le type de données de la colonne de partition car cette colonne est dérivée de la requête.

ROW FORMAT DELIMITED format_ligne

Clause qui spécifie le format des données sous-jacentes. Les valeurs possibles pour format_ligne sont les suivantes :

  • LINES TERMINATED BY ’délimiteur

  • FIELDS TERMINATED BY ’délimiteur

Spécifiez un caractère ASCII unique pour ’délimiteur’. Vous pouvez spécifier des caractères ASCII non imprimables en octal, au format '\ddd', où d est un chiffre octal (de 0 à 7) jusqu’à ‘\177’. L’exemple suivant spécifie le caractère BEL (bell) en octal.

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\007'

Si ROW FORMAT est omis, le format par défaut est DELIMITED FIELDS TERMINATED BY ’\A’ (début d’en-tête)et LINES TERMINATED BY ’\n’ (nouvelle ligne).

ROW FORMAT SERDE ’nom_sérialisation_désérialisation
[WITH SERDEPROPERTIES ( ’nom_propriété’ = ’valeur_propriété’ [, ...] ) ]

Clause qui spécifie le format SERDE des données sous-jacentes.

nom_sérialisation_désérialisation

Le nom de l' SerDe. Vous pouvez spécifier les formats suivants :

  • org.apache.hadoop.hive.serde2. RegexSerDe

  • com.amazonaws.glue.serde. GrokSerDe

  • org.apache.hadoop.hive.serde2.OpenCSVSerde

    Ce paramètre prend en charge la SerDe propriété suivante pour OpenCSVSerde :

    'wholeFile' = 'true'

    Définissez la propriété wholeFile sur true pour analyser correctement les caractères de nouvelle ligne (\n) dans les chaînes entre guillemets pour les requêtes OpenCSV.

  • org.openx.data.json. JsonSerDe

    • Le SERDE JSON prend également en charge les fichiers Ion.

    • Le JSON doit être dans un format correct.

    • Les horodatages dans Ion et JSON doivent utiliser le format ISO8601.

    • Ce paramètre prend en charge les SerDe propriétés suivantes pour JsonSerDe :

      'strip.outer.array'='true'

      Traite les fichiers Ion/JSON contenant un très grand tableau entre les crochets extérieurs ( [ … ] ) comme s’il contient plusieurs enregistrements JSON au sein du tableau.

  • com.amazon.ionhiveserde. IonHiveSerDe

    Le format Amazon ION fournit des formats texte et binaire, en plus des types de données. Pour une table externe qui fait référence à des données au format ION, vous mappez chaque colonne de la table externe à l’élément correspondant dans les données au format ION. Pour plus d’informations, consultez Amazon Ion. Vous devez également spécifier les formats d’entrée et de sortie.

WITH SERDEPROPERTIES ( ’nom_propriété’ = ’valeur_propriété’ [, ...] ) ]

À titre facultatif, spécifiez les noms et valeurs des propriétés, séparés par des virgules.

Si ROW FORMAT est omis, le format par défaut est DELIMITED FIELDS TERMINATED BY ’\A’ (début d’en-tête)et LINES TERMINATED BY ’\n’ (nouvelle ligne).

STORED AS format_fichier

Format des fichiers de données.

Les formats valides sont les suivants :

  • PARQUET

  • RCFILE (pour l'utilisation des données ColumnarSerDe uniquement, pas LazyBinaryColumnarSerDe)

  • SEQUENCEFILE

  • TEXTFILE (pour les fichiers texte, y compris les fichiers JSON).

  • ORC

  • AVRO

  • INPUTFORMAT ’nom_classe_format_entrée’ OUTPUTFORMAT ’nom_classe_format_sortie

La commande CREATE EXTERNAL TABLE AS prend uniquement en charge deux formats de fichiers, TEXTFILE et PARQUET.

Pour INPUTFORMAT et OUTPUTFORMAT, indiquez un nom de classe comme dans l’exemple suivant.

'org.apache.hadoop.mapred.TextInputFormat'
LOCATION { ’s3://bucket/folder/’ | ’s3://bucket/manifest_file’}

Chemin menant au compartiment Amazon S3 ou au dossier qui contient les fichiers de données ou un fichier manifeste qui contient une liste de chemins d’objets Amazon S3. Les compartiments doivent se trouver dans la même AWS région que le cluster Amazon Redshift. Pour obtenir la liste des AWS régions prises en charge, consultezConsidérations relatives à Amazon Redshift Spectrum.

Si le chemin précise un compartiment ou un dossier, par exemple, 's3://mybucket/custdata/', Redshift Spectrum analyse les fichiers qui se trouvent dans le compartiment ou dossier spécifié et dans tous les sous-dossiers. Redshift Spectrum ignore les fichiers masqués ainsi que les fichiers dont le nom commence par un point ou un trait de soulignement.

Si le chemin indique un fichier manifeste, l’argument 's3://bucket/manifest_file' doit explicitement faire référence à un seul fichier, par exemple, 's3://mybucket/manifest.txt'. Il ne peut pas faire référence à un préfixe de clé.

Le manifeste est un fichier texte au format JSON qui répertorie l’URL de chaque fichier qui doit être chargé à partir d’Amazon S3, ainsi que la taille du fichier, en octets. L’URL inclut le nom du compartiment et le chemin d’objet complet du fichier. Les fichiers spécifiés dans le manifeste peuvent se trouver dans différents compartiments, mais tous les compartiments doivent se trouver dans la même AWS région que le cluster Amazon Redshift. Si un fichier est répertorié deux fois, le fichier est chargé deux fois. L’exemple suivant illustre le format JSON pour un manifeste qui charge trois fichiers.

{ "entries": [ {"url":"s3://mybucket-alpha/custdata.1", "meta": { "content_length": 5956875 } }, {"url":"s3://mybucket-alpha/custdata.2", "meta": { "content_length": 5997091 } }, {"url":"s3://mybucket-beta/custdata.1", "meta": { "content_length": 5978675 } } ] }

Vous pouvez rendre obligatoire l’inclusion d’un fichier particulier. Pour ce faire, incluez une option mandatory au niveau du fichier dans le manifeste. Lorsque vous interrogez une table externe avec un fichier obligatoire manquant, l’instruction SELECT échoue. Assurez-vous que tous les fichiers inclus dans la définition de la table externe sont présents. S’ils ne sont pas tous présents, une erreur apparaît, indiquant le premier fichier obligatoire introuvable. L’exemple suivant montre le fichier JSON d’un manifeste dont l’ mandatory option est définie sur true.

{ "entries": [ {"url":"s3://mybucket-alpha/custdata.1", "mandatory":true, "meta": { "content_length": 5956875 } }, {"url":"s3://mybucket-alpha/custdata.2", "mandatory":false, "meta": { "content_length": 5997091 } }, {"url":"s3://mybucket-beta/custdata.1", "meta": { "content_length": 5978675 } } ] }

Pour référencer les fichiers créés à l’aide de la commande UNLOAD, vous devez utiliser le manifeste créé à l’aide de la commande UNLOAD avec le paramètre MANIFEST. Le fichier manifeste est compatible avec un fichier manifeste pour Commande COPY depuis Amazon S3, mais il n’utilise pas les mêmes clés. Les clés inutilisées sont ignorées.

TABLE PROPERTIES ( ’nom_propriété’=’valeur_propriété’ [, ...] )

Clause qui définit la définition de table pour des propriétés de table.

Note

Les propriétés de table sont sensibles à la casse.

’compression_type’=’valeur

Propriété qui définit le type de compression à utiliser si le nom de fichier ne contient aucune extension. Si vous définissez cette propriété et que le nom de fichier contient une extension, celle-ci est ignorée et la valeur définie par la propriété est utilisée. Les valeurs valides pour chaque type de compression sont les suivantes :

  • bzip2

  • gzip

  • none

  • snappy

’data_cleansing_enabled’=’true / false’

Cette propriété définit si la gestion des données est activée pour la table. Lorsque ’data_cleansing_enabled’ est définie sur « true », la gestion des données est activée pour la table. Lorsque ’data_cleansing_enabled’ est définie sur « false », la gestion des données est désactivée pour la table. Vous trouverez ci-dessous la liste des propriétés de gestion des données au niveau de la table contrôlées par cette propriété :

  • column_count_mismatch_handling

  • invalid_char_handling

  • numeric_overflow_handling

  • replacement_char

  • surplus_char_handling

Pour obtenir des exemples, consultez Exemples de gestion des données.

’invalid_char_handling’=’value

Spécifie l’action à effectuer lorsque les résultats de la requête contiennent des valeurs de caractères UTF-8 non valides. Vous pouvez spécifier les actions suivantes :

DISABLED

N’effectue pas de gestion des caractères non valides.

FAIL

Annule les requêtes renvoyant des données contenant des valeurs UTF-8 non valides.

SET_TO_NULL

Remplace les valeurs UTF-8 non valides par null.

DROP_ROW

Remplace chaque valeur de la ligne par null.

REPLACE

Remplace le caractère non valide par le caractère de remplacement que vous spécifiez à l’aide de replacement_char.

’replacement_char’=’character

Spécifie le caractère de remplacement à utiliser lorsque vous définissez invalid_char_handling sur REPLACE.

’numeric_overflow_handling’=’value’

Spécifie l’action à effectuer lorsque les données ORC contiennent un entier (par exemple, BIGINT ou int64) supérieur à la définition de colonne (par exemple, SMALLINT ou int16). Vous pouvez spécifier les actions suivantes :

DISABLED

La gestion des caractères non valide est désactivée.

FAIL

Annulez la requête lorsque les données contiennent des caractères non valides.

SET_TO_NULL

Définissez les caractères non valides sur null.

DROP_ROW

Définissez chaque valeur de la ligne sur null.

’surplus_bytes_handling’=’value

Spécifie comment traiter les données chargées qui dépassent la longueur du type de données défini pour les colonnes contenant des données VARBYTE. Par défaut, Redshift Spectrum définit la valeur sur null pour les données qui dépassent la largeur de la colonne.

Vous pouvez spécifier les actions suivantes à effectuer lorsque la requête renvoie des données qui dépassent la longueur du type de données :

SET_TO_NULL

Remplace les données qui dépassent la largeur de colonne par null.

DISABLED

N’effectue pas de gestion des octets excédentaires.

FAIL

Annule les requêtes qui renvoient des données dépassant la largeur de colonne.

DROP_ROW

Supprime toutes les lignes qui contiennent des données qui dépassent la largeur de la colonne.

TRUNCATE

Supprime les caractères qui dépassent le nombre maximal de caractères défini pour la colonne.

’surplus_char_handling’=’value

Spécifie comment gérer les données chargées qui dépassent la longueur du type de données défini pour les colonnes contenant des données VARCHAR, CHAR ou chaîne. Par défaut, Redshift Spectrum définit la valeur sur null pour les données qui dépassent la largeur de la colonne.

Vous pouvez spécifier les actions suivantes à effectuer lorsque la requête renvoie des données qui dépassent la largeur de la colonne :

SET_TO_NULL

Remplace les données qui dépassent la largeur de colonne par null.

DISABLED

N’effectue pas de gestion des caractères excédentaires.

FAIL

Annule les requêtes qui renvoient des données dépassant la largeur de colonne.

DROP_ROW

Remplace chaque valeur de la ligne par null.

TRUNCATE

Supprime les caractères qui dépassent le nombre maximal de caractères défini pour la colonne.

’column_count_mismatch_handling’=’value’

Indique si le fichier contient moins ou plus de valeurs pour une ligne que le nombre de colonnes spécifié dans la définition de la table externe. Cette propriété est disponible uniquement pour un format de fichier texte non compressé. Vous pouvez spécifier les actions suivantes :

DISABLED

La gestion des non-correspondances du nombre de colonnes est désactivée.

FAIL

Fait échouer la requête si la non-correspondance du nombre de colonnes est détectée.

SET_TO_NULL

Remplit les valeurs manquantes avec NULL et ignore les valeurs supplémentaires de chaque ligne.

DROP_ROW

Supprime de l’analyse toutes les lignes qui contiennent une erreur de non-correspondance du nombre de colonnes.

’numRows’=’nombre_lignes

Propriété qui définit la valeur numRows de la définition de table. Afin de mettre à jour explicitement les statistiques d’une table externe, définissez la propriété numRows pour indiquer la taille de la table. Amazon Redshift n'analyse pas les tables externes pour générer les statistiques de table utilisées par l'optimiseur de requête afin de générer un plan de requête. Si des statistiques de table ne sont pas définies pour une table externe, Amazon Redshift génère un plan d’exécution de requête d’après l’hypothèse selon laquelle les tables externes sont les tables les plus volumineuses et les tables locales les tables les plus petites.

’skip.header.line.count’=’nombre_lignes

Propriété qui définit le nombre de lignes à ignorer au début de chaque fichier source.

’serialization.null.format’=’ ’

Propriété qui spécifie que Spectrum doit renvoyer une valeur NULL lorsqu’il y a une correspondance exacte avec le texte fourni dans un champ.

’orc.schema.resolution’=’type_mappage’

Propriété qui définit le type de mappage de colonne sur le mappage pour des tables qui utilisent le format de données ORC. Cette propriété est ignorée pour tous les autres formats de données.

Les valeurs valides pour le type de mappage de colonne sont les suivantes :

  • name

  • position

Si la propriété orc.schema.resolution est omise, les colonnes sont mappées par nom par défaut. Si la propriété orc.schema.resolution est définie sur une autre valeur que ’name’ ou ’position’, les colonnes sont mappées par position. Pour en savoir plus sur le mappage des colonnes, consultez Mappage de colonnes de table externe à des colonnes ORC.

Note

La commande COPY mappe aux fichiers de données ORC uniquement par position. La propriété de table orc.schema.resolution n’a aucun effet sur le comportement de la commande COPY.

’write.parallel’=’on / off’

Propriété qui définit si la commande CREATE EXTERNAL TABLE AS doit écrire les données en parallèle. Par défaut, CREATE EXTERNAL TABLE AS écrit les données en parallèle dans plusieurs fichiers, en fonction du nombre de tranches du cluster. Par défaut, l’option est activée. Lorsque ’write.parallel’ est désactivé, CREATE EXTERNAL TABLE AS écrit en série dans un ou plusieurs fichiers de données sur Amazon S3. Cette propriété de table s’applique également à toute instruction INSERT ultérieure dans la même table externe.

‘write.maxfilesize.mb’=‘size’

Propriété qui définit la taille maximale (en Mo) de chaque fichier écrit dans Amazon S3 par la commande CREATE EXTERNAL TABLE AS. La taille doit être un entier valide compris entre 5 et 6 200. La taille maximale par défaut du fichier est de 6 200 Mo. Cette propriété de table s’applique également à toute instruction INSERT ultérieure dans la même table externe.

‘write.kms.key.id’=‘value

Vous pouvez spécifier une AWS Key Management Service clé pour activer le chiffrement côté serveur (SSE) pour les objets Amazon S3, dont la valeur est l'une des suivantes :

  • autopour utiliser la AWS KMS clé par défaut stockée dans le compartiment Amazon S3.

  • kms-key que vous spécifiez pour chiffrer les données.

select_statement

Instruction qui insère une ou plusieurs lignes dans la table externe en définissant une requête. Toutes les lignes produites par la requête sont écrites dans Amazon S3 au format texte ou Parquet en fonction de la définition de la table.

Divers exemples sont disponibles à la page Exemples.