La commande UNLOAD exporte les données d'un projet MaxCompute vers un stockage externe, tel qu'Object Storage Service (OSS) ou Hologres, afin de les rendre accessibles à d'autres moteurs de calcul.
Autorisations
Autorisations MaxCompute : le compte utilisé pour l'opération doit disposer de l'autorisation de lecture (Select) sur les données de la table à exporter. Pour plus d'informations sur l'attribution des autorisations, consultez la rubrique Autorisations MaxCompute.
-
Autorisations de stockage externe : avant d'exporter des données depuis MaxCompute vers un stockage externe, vous devez accorder à MaxCompute les autorisations nécessaires pour accéder à ce stockage, qu'il s'agisse d'OSS ou de Hologres.
Autorisation OSS : l'autorisation en un clic est prise en charge pour renforcer la sécurité. Pour plus d'informations, consultez la rubrique Solutions d'autorisation pour l'accès aux sources de données externes. Les exemples ci-dessous utilisent l'autorisation en un clic et le rôle est nommé
AliyunODPSDefaultRole.Autorisation Hologres : pour finaliser l'autorisation, créez un rôle RAM, attribuez-lui les autorisations d'accès à MaxCompute, puis ajoutez ce rôle à l'instance Hologres. Pour plus d'informations, consultez la rubrique Créer une table étrangère Hologres (mode STS).
Exporter des données vers un stockage externe
La commande UNLOAD fonctionne en mode ajout. Lorsque vous exportez des données plusieurs fois vers le même chemin de destination, le système n'écrase pas les fichiers existants ; il crée de nouveaux fichiers dans ce chemin. Pour écraser les données, vous devez vider manuellement le chemin de destination avant d'exécuter la commande UNLOAD.
Exporter des données vers OSS
Exporter des données au format texte (CSV ou TSV)
Cette méthode utilise un StorageHandler intégré pour exporter les données. Par défaut, l'extension de fichier .csv ou .tsv est ajoutée aux fichiers de sortie.
Syntaxe
UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
INTO | OVERWRITE
LOCATION <oss_location>
STORED BY <StorageHandler>
[WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)];
Configurations principales
Élément de configuration | Description |
oss_location | Chemin de destination dans OSS. Le format est |
StorageHandler | Processeur intégré :
|
SERDEPROPERTIES | Permet de configurer les propriétés d'exportation. Les propriétés les plus courantes sont :
|
Exemples
Exemple 1 : Exporter des données au format CSV et les compresser dans un fichier GZIP
Exemple 2 : Exporter des données partitionnées au format TSV et les compresser
Exemple 1 : Exporter des données au format CSV et les compresser dans un fichier GZIP
Exportez les données de la table sale_detail d'un projet MaxCompute vers OSS. Le code suivant illustre les données contenues dans la table sale_detail :
-- Partition fields: sale_date, region
+------------+-------------+-------------+------------+------------+
| shop_name | customer_id | total_price | sale_date | region |
+------------+-------------+-------------+------------+------------+
| s1 | c1 | 100.1 | 2013 | china |
| s2 | c2 | 100.2 | 2013 | china |
| s3 | c3 | 100.3 | 2013 | china |
| null | c5 | NULL | 2014 | shanghai |
| s6 | c6 | 100.4 | 2014 | shanghai |
| s7 | c7 | 100.5 | 2014 | shanghai |
+------------+-------------+-------------+------------+------------+
Procédure :
-
Côté OSS : connectez-vous à la console OSS, créez le dossier
mc-unload/data_location/dans un compartiment OSS situé dans la régionoss-cn-hangzhou, puis construisez le chemin OSS. Pour plus d'informations sur la création d'un compartiment OSS, consultez la rubrique Créer un compartiment dans la console. Construisez le chemin OSS en fonction des informations relatives au compartiment, à la région et au point de terminaison. Par exemple :oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location -
Côté MaxCompute : connectez-vous à un client MaxCompute et exécutez la commande UNLOAD.
Méthode 1 : Utiliser une requête SELECT
-- Set the amount of data to be read from the MaxCompute table by a single worker to 256 MB. This indirectly controls the number of exported files. SET odps.stage.mapper.split.size=256; UNLOAD FROM (SELECT * FROM sale_detail) INTO LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 'odps.text.option.gzip.output.enabled'='true' );Méthode 2 : Spécifier directement le nom de la table (aucun frais de requête n'est généré)
-- Set the amount of data to be read from the MaxCompute table by a single worker to 256 MB. This indirectly controls the number of exported files. SET odps.stage.mapper.split.size=256; UNLOAD FROM sale_detail INTO LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 'odps.text.option.gzip.output.enabled'='true' ); Vérifier le résultat : connectez-vous à la console OSS et consultez les données exportées dans le chemin OSS de destination. Le fichier exporté est au format CSV et compressé à l'aide de GZIP.
Exemple 2 : Exporter des données partitionnées au format TSV et les compresser
Exportez les données des partitions pour lesquelles sale_date='2013' et region='china' sont spécifiées, depuis la table sale_detail au format TSV, et compressez les données à l'aide de GZIP.
-- Partition fields: sale_date, region
+------------+-------------+-------------+------------+------------+
| shop_name | customer_id | total_price | sale_date | region |
+------------+-------------+-------------+------------+------------+
| s1 | c1 | 100.1 | 2013 | china |
| s2 | c2 | 100.2 | 2013 | china |
| s3 | c3 | 100.3 | 2013 | china |
| null | c5 | NULL | 2014 | shanghai |
| s6 | c6 | 100.4 | 2014 | shanghai |
| s7 | c7 | 100.5 | 2014 | shanghai |
+------------+-------------+-------------+------------+------------+
Procédure :
-
Côté OSS : connectez-vous à la console OSS, créez le dossier
mc-unload/data_location/dans un compartiment OSS situé dans la régionoss-cn-hangzhou, puis construisez le chemin OSS. Pour plus d'informations sur la création d'un compartiment OSS, consultez la rubrique Créer un compartiment dans la console. Construisez le chemin OSS en fonction des informations relatives au compartiment, à la région et au point de terminaison. Par exemple :oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location -
Côté MaxCompute : connectez-vous à un client MaxCompute et exécutez la commande UNLOAD.
SET odps.stage.mapper.split.size=256; UNLOAD FROM sale_detail PARTITION (sale_date='2013',region='china') INTO LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' STORED BY 'com.aliyun.odps.TsvStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 'odps.text.option.gzip.output.enabled'='true' ); Vérifier le résultat : connectez-vous à la Console de gestion OSS et consultez le résultat de l'importation dans le chemin OSS cible. Le fichier exporté est un fichier compressé GZIP au format TSV.
Exporter des données dans un format open source (tel que Parquet ou ORC)
Cette méthode permet d'exporter des données vers divers formats de stockage colonnaire open source ou de données structurées.
Syntaxe
UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
INTO | OVERWRITE
LOCATION <oss_location>
[ROW FORMAT SERDE '<serde_class>'
[WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)]
]
STORED AS <file_format>
[PROPERTIES ('<tbproperty_name>'='<tbproperty_value>')];
Configurations principales
|**Élément de configuration**
|
**Description**
| | --- | --- | |
oss_location
|
Chemin de destination dans OSS. Le format est `oss://
| |
serde_class
|
Spécifie la bibliothèque de sérialisation et de désérialisation. Par exemple, utilisez `org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe` pour Parquet.
| |
SERDEPROPERTIES
| `'odps.properties.rolearn'` : obligatoire. ARN du rôle RAM utilisé pour accéder à OSS.
| |
file_format
|
Obligatoire. Spécifie le format de fichier, par exemple `PARQUET`, `ORC`, `TEXTFILE` ou `JSON`.
| |
PROPERTIES
|
- `'mcfed.parquet.compression'='SNAPPY'` : spécifie le format de compression pour les fichiers Parquet. Les formats `SNAPPY` et `LZO` sont pris en charge.- `'odps.text.option.gzip.output.enabled'='true'` : spécifie la compression GZIP pour TextFile.
|
Formats et méthodes de compression pris en charge
|**Format de fichier**
|
**Formats de compression pris en charge**
|
**Description**
| | --- | --- | --- | |
PARQUET
|
SNAPPY, LZO
|
Format de stockage colonnaire adapté aux requêtes analytiques.
| |
ORC
|
SNAPPY, LZO
|
Format de stockage colonnaire adapté à l'écosystème Hadoop.
| |
TEXTFILE
|
GZIP
|
Format texte prenant en charge les séparateurs personnalisés.
| |
RCFILE
|
-
|
Format de stockage hybride ligne-colonne.
| |
SEQUENCEFILE
|
-
|
Format de fichier de séquence Hadoop.
| |
AVRO
|
-
|
Format de sérialisation de données.
| |
JSON
|
-
|
Format JSON.
|
Exemples
Exemple 1 : Exporter des données au format PARQUET et les compresser avec SNAPPY
Exemple 2 : Exporter des données partitionnées au format PARQUET
Exemple 3 : Exporter des données au format TEXTFILE et spécifier un séparateur
Exemple 1 : Exporter des données au format PARQUET et les compresser avec SNAPPY
Exportez les données de la table sale_detail d'un projet MaxCompute vers OSS. Le code suivant illustre le contenu de la table sale_detail :
-- Partition fields: sale_date, region
+------------+-------------+-------------+------------+------------+
| shop_name | customer_id | total_price | sale_date | region |
+------------+-------------+-------------+------------+------------+
| s1 | c1 | 100.1 | 2013 | china |
| s2 | c2 | 100.2 | 2013 | china |
| s3 | c3 | 100.3 | 2013 | china |
| null | c5 | NULL | 2014 | shanghai |
| s6 | c6 | 100.4 | 2014 | shanghai |
| s7 | c7 | 100.5 | 2014 | shanghai |
+------------+-------------+-------------+------------+------------+
Procédure :
-
Côté OSS : Connectez-vous à la console OSS, créez le dossier
mc-unload/data_location/dans un bucket OSS situé dans la régionoss-cn-hangzhou, puis définissez le chemin OSS. Pour plus d'informations sur la création d'un bucket OSS, consultez la rubrique Créer un bucket dans la console. Construisez le chemin OSS en vous basant sur les informations relatives au bucket, à la région et à l'endpoint. Par exemple :oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location -
Côté MaxCompute : Connectez-vous à un client MaxCompute et exécutez la commande UNLOAD.
-- Set the amount of data to be read from the MaxCompute table by a single worker to 256 MB. This indirectly controls the number of exported files. SET odps.stage.mapper.split.size=256; UNLOAD FROM (SELECT * FROM sale_detail) INTO LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole' ) STORED AS PARQUET PROPERTIES('mcfed.parquet.compression'='SNAPPY'); Résultat de la vérification : Connectez-vous à la console de gestion OSS et consultez le résultat de l'importation dans le chemin OSS cible. Les fichiers exportés sont au format PARQUET et compressés avec SNAPPY.
Exemple 2 : Exporter des données partitionnées au format PARQUET
Exportez les données des partitions pour lesquelles sale_date='2013' et region='china' sont spécifiées depuis la table MaxCompute sale_detail au format PARQUET, et compressez les données avec SNAPPY. Le code suivant illustre le contenu de la table sale_detail :
-- Partition fields: sale_date, region
+------------+-------------+-------------+------------+------------+
| shop_name | customer_id | total_price | sale_date | region |
+------------+-------------+-------------+------------+------------+
| s1 | c1 | 100.1 | 2013 | china |
| s2 | c2 | 100.2 | 2013 | china |
| s3 | c3 | 100.3 | 2013 | china |
| null | c5 | NULL | 2014 | shanghai |
| s6 | c6 | 100.4 | 2014 | shanghai |
| s7 | c7 | 100.5 | 2014 | shanghai |
+------------+-------------+-------------+------------+------------+
Procédure :
-
Côté OSS : Connectez-vous à la console OSS, créez le dossier
mc-unload/data_location/dans un bucket OSS situé dans la régionoss-cn-hangzhou, puis définissez le chemin OSS. Pour plus d'informations sur la création d'un bucket OSS, consultez la rubrique Créer un bucket dans la console. Construisez le chemin OSS en vous basant sur les informations relatives au bucket, à la région et à l'endpoint. Par exemple :oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location -
Côté MaxCompute : Connectez-vous à un client MaxCompute et exécutez la commande UNLOAD.
-- Set the amount of data to be read from the MaxCompute table by a single worker to 256 MB. This indirectly controls the number of exported files. SET odps.stage.mapper.split.size=256; UNLOAD FROM sale_detail PARTITION (sale_date='2013',region='china') INTO LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole') STORED AS PARQUET PROPERTIES('mcfed.parquet.compression'='SNAPPY'); Vérifiez le résultat : Connectez-vous à la console OSS et consultez les données exportées dans le chemin OSS de destination. Le fichier exporté est au format PARQUET et compressé avec SNAPPY.
Exemple 3 : Exporter des données au format TEXTFILE et spécifier un séparateur
Exportez les données de la table sale_detail vers un fichier TXT en utilisant une virgule (,) comme séparateur.
-- Partition fields: sale_date, region
+------------+-------------+-------------+------------+------------+
| shop_name | customer_id | total_price | sale_date | region |
+------------+-------------+-------------+------------+------------+
| s1 | c1 | 100.1 | 2013 | china |
| s2 | c2 | 100.2 | 2013 | china |
| s3 | c3 | 100.3 | 2013 | china |
| null | c5 | NULL | 2014 | shanghai |
| s6 | c6 | 100.4 | 2014 | shanghai |
| s7 | c7 | 100.5 | 2014 | shanghai |
+------------+-------------+-------------+------------+------------+
Procédure :
-
Côté OSS : Connectez-vous à la console OSS, créez le dossier
mc-unload/data_location/dans un bucket OSS situé dans la régionoss-cn-hangzhou, puis définissez le chemin OSS. Pour plus d'informations sur la création d'un bucket OSS, consultez la rubrique Créer un bucket dans la console. Construisez le chemin OSS en vous basant sur les informations relatives au bucket, à la région et à l'endpoint. Par exemple :oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location -
Côté MaxCompute : Connectez-vous à un client MaxCompute et exécutez la commande UNLOAD.
-- Set the amount of data to be read from the MaxCompute table by a single worker to 256 MB. This indirectly controls the number of exported files. SET odps.sql.allow.fullscan=true; UNLOAD FROM (SELECT * FROM sale_detail) INTO LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/mc-unload/data_location/' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ('field.delim'=',') STORED AS TEXTFILE PROPERTIES ('odps.external.data.enable.extension'='true'); Vérifiez le résultat : Connectez-vous à la console OSS et consultez les données exportées dans le chemin OSS de destination. Le fichier exporté est au format TXT et utilise des virgules comme séparateurs.
Personnaliser les préfixes, suffixes et extensions des noms de fichiers
Lorsque vous utilisez la commande UNLOAD pour exporter des données vers OSS, vous pouvez utiliser les propriétés dans PROPERTIES ou SERDEPROPERTIES afin de personnaliser le préfixe, le suffixe et l'extension des fichiers de sortie.
Syntaxe
UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
INTO | OVERWRITE
LOCATION <oss_location>
[ROW FORMAT SERDE '<serde_class>'
[WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)]
]
STORED AS <file_format>
[PROPERTIES ('<tbproperty_name>'='<tbproperty_value>',...)];
Configurations principales
|**property_name/tbproperty_name**
|
**description**
|
**Exemple de valeur**
| | --- | --- | --- | |
**odps.external.data.output.prefix**
|
Le préfixe du nom de fichier. Il peut contenir des lettres, des chiffres et des traits de soulignement (_). La longueur du préfixe doit être comprise entre 1 et 10 caractères.
|
'mc_'
| |
**odps.external.data.output.suffix**
|
Le suffixe du nom de fichier. Il peut contenir des lettres, des chiffres et des traits de soulignement (_).
|
'_hangzhou'
| |
**odps.external.data.enable.extension**
|
Indique si les extensions par défaut telles que `.tx` et `.parquet` doivent être affichées.
|
'true'
| |
**odps.external.data.output.explicit.extension**
|
Une extension de nom de fichier personnalisée. Cette propriété a une priorité plus élevée que l'extension par défaut.
|
'jsonl'
|
Référence des suffixes
Le tableau suivant décrit les extensions générées automatiquement pour différentes tables externes lorsque vous définissez le paramètre odps.external.data.enable.extension=true.
**format**
|
SerDe
|
Suffixe
| | --- | --- | --- | |
SEQUENCEFILE
|
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
|
.sequencefile
| |
TEXTFILE
|
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
|
.txt
| |
RCFILE
|
org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe
|
.rcfile
| |
ORC
|
org.apache.hadoop.hive.ql.io.orc.OrcSerde
|
.orc
| |
PARQUET
|
org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
|
.parquet
| |
AVRO
|
org.apache.hadoop.hive.serde2.avro.AvroSerDe
|
.avro
| |
JSON
|
org.apache.hive.hcatalog.data.JsonSerDe
|
.json
| |
CSV
|
org.apache.hadoop.hive.serde2.OpenCSVSerde
|
.csv
|
Lorsque vous exportez des données compressées au format SNAPPY ou LZO, les extensions .snappy ou .lzo n'apparaissent pas dans les noms des fichiers exportés.
Exemples
Exemple 1 : Exporter un fichier au format TEXTFILE et ajouter un préfixe et un suffixe
Exemple 2 : Exporter un fichier au format JSON et personnaliser l'extension du nom de fichier
Exemple 1 : Exporter un fichier au format TEXTFILE et ajouter un préfixe et un suffixe
Exportez les données de la table sale_detail d'un projet MaxCompute vers OSS sous forme de fichier TXT. Le fichier est nommé selon le format mc_<system-generated>_beijing.txt. Le code suivant illustre le contenu de la table sale_detail :
-- Partition fields: sale_date, region
+------------+-------------+-------------+------------+------------+
| shop_name | customer_id | total_price | sale_date | region |
+------------+-------------+-------------+------------+------------+
| s1 | c1 | 100.1 | 2013 | china |
| s2 | c2 | 100.2 | 2013 | china |
| s3 | c3 | 100.3 | 2013 | china |
| null | c5 | NULL | 2014 | shanghai |
| s6 | c6 | 100.4 | 2014 | shanghai |
| s7 | c7 | 100.5 | 2014 | shanghai |
+------------+-------------+-------------+------------+------------+
Procédure :
-
Côté OSS : Connectez-vous à la console OSS, créez le dossier
mc-unload/data_location/dans un bucket OSS situé dans la régionoss-cn-hangzhou, puis définissez le chemin OSS. Pour plus d'informations sur la création d'un bucket OSS, consultez la rubrique Créer un bucket dans la console. Construisez le chemin OSS en vous basant sur les informations relatives au bucket, à la région et à l'endpoint. Par exemple :oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location -
Côté MaxCompute : Connectez-vous à un client MaxCompute et exécutez la commande UNLOAD.
UNLOAD FROM (SELECT * FROM sale_detail) INTO LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/***/textfile' row format serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' STORED AS textfile PROPERTIES ( 'odps.external.data.output.prefix'='mc_', 'odps.external.data.output.suffix'='_beijing', 'odps.external.data.enable.extension'='true'); Vérifiez le résultat : Connectez-vous à la console OSS et consultez les données exportées dans le chemin OSS de destination. Le nom du fichier exporté est
mc_<system-generated>_beijing.txt.
Exemple 2 : Exporter un fichier au format JSON et personnaliser l'extension de fichier
Exportez les données de la table sale_detail d'un projet MaxCompute vers OSS sous la forme d'un fichier JSON. Le fichier est nommé selon le format mc_<system-generated file name>_beijing.json. Le code ci-dessous présente les données de la table sale_detail :
-- Partition fields: sale_date, region
+------------+-------------+-------------+------------+------------+
| shop_name | customer_id | total_price | sale_date | region |
+------------+-------------+-------------+------------+------------+
| s1 | c1 | 100.1 | 2013 | china |
| s2 | c2 | 100.2 | 2013 | china |
| s3 | c3 | 100.3 | 2013 | china |
| null | c5 | NULL | 2014 | shanghai |
| s6 | c6 | 100.4 | 2014 | shanghai |
| s7 | c7 | 100.5 | 2014 | shanghai |
+------------+-------------+-------------+------------+------------+
Procédure :
-
Côté OSS : Connectez-vous à la console OSS, créez le dossier
mc-unload/data_location/dans un bucket OSS situé dans la régionoss-cn-hangzhou, puis construisez le chemin OSS. Pour plus d'informations sur la création d'un bucket OSS, consultez Créer un bucket dans la console. Définissez le chemin OSS en vous basant sur les informations du bucket, de la région et de l'endpoint. Par exemple :oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location -
Côté MaxCompute : Connectez-vous à un client MaxCompute et exécutez la commande UNLOAD.
UNLOAD FROM (SELECT * FROM sale_detail) INTO LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/***/json' ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' WITH SERDEPROPERTIES ( 'odps.external.data.output.prefix'='mc_', 'odps.external.data.output.suffix'='_beijing', 'odps.external.data.output.explicit.extension'='json') STORED AS JSON; Vérification des résultats : Connectez-vous à la console OSS et consultez les données exportées dans le chemin de destination OSS. Le nom du fichier exporté est
mc_<system-generated file name>_beijing.json.
Exporter des données vers Hologres
Limites
Autorisation par double signature : L'autorisation par double signature n'est pas prise en charge pour l'exportation de données vers Hologres.
Tables partitionnées : Vous ne pouvez pas exporter de données vers des tables partitionnées Hologres.
Mappage des types : Les types de données des champs de la table Hologres de destination doivent correspondre aux types de données des champs de la table MaxCompute. Pour plus d'informations, consultez Mappage des types de données entre MaxCompute et Hologres.
Syntaxe
UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
INTO
LOCATION <hologres_location>
STORED BY <StorageHandler>
[WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)];
Configurations principales
Élément de configuration | Description |
hologres_location | Chaîne de connexion Java Database Connectivity (JDBC) de la table Hologres de destination. Le format est |
StorageHandler | Spécifie un gestionnaire intégré. La valeur est fixée à |
SERDEPROPERTIES | Ce paramètre doit contenir les trois propriétés suivantes :
|
Exemple
Exportez les données de la table MaxCompute data_test vers la table Hologres mc_2_holo. Le code ci-dessous présente les données de la table data_test :
+------------+------+
| id | name |
+------------+------+
| 3 | rgege |
| 4 | Gegegegr |
+------------+------+
Procédure :
-
Côté Hologres : Créez la table de destination
mc_2_holodans Hologres.CREATE TABLE mc_2_holo (id INT, name TEXT); -
Côté MaxCompute : Connectez-vous à un client MaxCompute et exécutez la commande UNLOAD.
UNLOAD FROM (SELECT * FROM data_test) INTO LOCATION 'jdbc:postgresql://hgprecn-cn-5y**********-cn-hangzhou-internal.hologres.aliyuncs.com:80/test?ApplicationName=MaxCompute¤tSchema=public&useSSL=false&table=mc_2_holo/' STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::13**************:role/aliyunodpsholorole', 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 'odps.federation.jdbc.target.db.type'='holo' ); -
Vérification des résultats : Consultez les données exportées dans Hologres.
SELECT * FROM mc_2_holo;Le résultat suivant est renvoyé :
id name 4 Gegegegr 3 rgege
Facturation
-
Facturation de la commande
La commande UNLOAD elle-même n'est pas facturée.
Facturation des clauses de requête : La clause de requête d'une commande UNLOAD analyse les données et utilise des ressources de calcul pour générer les données exportées. Par conséquent, la clause de requête est facturée comme une tâche SQL standard.
-
Estimation des coûts
Le stockage de données structurées dans OSS et le stockage de données dans MaxCompute présentent chacun leurs propres avantages. Pour réduire les coûts lors de l'exportation de données depuis MaxCompute, effectuez une estimation complète des coûts incluant les coûts de stockage directs, les variations de volume de données et les coûts de requête ultérieurs.
-
Coûts de stockage directs
MaxCompute propose les classes de stockage Standard, Infrequent Access (IA) et Archive. Toutes les classes de stockage prennent en charge le stockage redondant inter-zones. Pour plus d'informations sur la facturation du stockage, consultez Frais de stockage.
OSS propose également les classes de stockage Standard, IA et Archive, qui prennent toutes en charge le stockage redondant inter-zones. Le prix de chaque classe de stockage est identique à celui de MaxCompute. OSS propose également les classes de stockage Cold Archive et Deep Cold Archive, moins coûteuses mais ne prenant pas en charge le stockage redondant inter-zones. Pour plus d'informations, consultez Frais de stockage OSS.
-
Variations du volume de données
Les données importées dans MaxCompute ont un taux de compression d'environ 5:1. La facturation est basée sur le volume de données après compression.
Pour les données stockées dans OSS, vous devez spécifier et maintenir le format de données ainsi que la méthode de compression. Pour plus d'informations sur les formats de données et les méthodes de compression pris en charge pour l'exportation de données depuis MaxCompute, consultez Tables externes OSS. Si les données ne sont pas compressées, le volume de données augmente après leur exportation vers OSS.
-
Coûts de requête ultérieurs
Les données stockées dans MaxCompute peuvent être interrogées à tout moment. Toutefois, si vous utilisez des classes de stockage telles que Infrequent Access ou Archive, vous devez payer des frais d'accès aux données supplémentaires pour la lecture des données. Si les données sont stockées dans des classes de stockage OSS non standard telles que Infrequent Access, Archive ou Cold Archive, des frais de récupération de données sont également appliqués. Si les données sont supprimées ou récupérées avant la fin de la durée minimale de stockage requise pour la classe de stockage, vous devrez peut-être payer des frais de suppression anticipée.
-
Références
Pour importer des données au format CSV ou d'autres formats open source depuis un stockage externe vers MaxCompute, consultez LOAD.