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.
Utilisez les AWS CLI métastores with Hive
Vous pouvez utiliser des aws athena
CLI commandes pour gérer les catalogues de données du métastore Hive que vous utilisez avec Athena. Après avoir défini un ou plusieurs catalogues à utiliser avec Athena, vous pouvez référencer ces catalogues dans aws athena
DDL vos commandes and. DML
Utilisation du AWS CLI pour gérer les catalogues de métastores Hive
Enregistrement d'un catalogue : C reate-data-catalog
Pour enregistrer un catalogue de données, utilisez la commande create-data-catalog
. Utilisez le paramètre name
pour spécifier le nom que vous souhaitez utiliser pour le catalogue. Passez ARN la fonction Lambda à l'metadata-function
option de l'parameters
argument. Pour créer des identifications pour le nouveau catalogue, utilisez le paramètre tags
avec une ou plusieurs paires d'arguments Key=
séparées par des espaces.key
,Value=value
L'exemple suivant enregistre le catalogue de métastore Hive nommé hms-catalog-1
. La commande a été formatée pour être lisible.
$ aws athena create-data-catalog --name "hms-catalog-1" --type "HIVE" --description "Hive Catalog 1" --parameters "metadata-function=arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3,sdk-version=1.0" --tags Key=MyKey,Value=MyValue --region us-east-1
Afficher les détails du catalogue : G et-data-catalog
Pour afficher les détails d'un catalogue, passez le nom du catalogue à la commande get-data-catalog
, comme dans l'exemple suivant.
$ aws athena get-data-catalog --name "hms-catalog-1" --region us-east-1
L'exemple de résultat suivant est au JSON format.
{ "DataCatalog": { "Name": "hms-catalog-1", "Description": "Hive Catalog 1", "Type": "HIVE", "Parameters": { "metadata-function": "arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3", "sdk-version": "1.0" } } }
Liste des catalogues enregistrés : L ist-data-catalogs
Pour répertorier les catalogues enregistrés, utilisez la commande list-data-catalogs
et spécifiez éventuellement une région, comme dans l'exemple suivant. Les catalogues répertoriés incluent toujours AWS Glue.
$ aws athena list-data-catalogs --region us-east-1
L'exemple de résultat suivant est au JSON format.
{ "DataCatalogs": [ { "CatalogName": "AwsDataCatalog", "Type": "GLUE" }, { "CatalogName": "hms-catalog-1", "Type": "HIVE", "Parameters": { "metadata-function": "arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3", "sdk-version": "1.0" } } ] }
Mettre à jour un catalogue : U pdate-data-catalog
Pour mettre à jour un catalogue de données, utilisez la commande update-data-catalog
, comme dans l'exemple suivant. La commande a été formatée pour être lisible.
$ aws athena update-data-catalog --name "hms-catalog-1" --type "HIVE" --description "My New Hive Catalog Description" --parameters "metadata-function=arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new,sdk-version=1.0" --region us-east-1
Supprimer un catalogue : D elete-data-catalog
Pour supprimer un catalogue de données, utilisez la commande delete-data-catalog
, comme dans l'exemple suivant.
$ aws athena delete-data-catalog --name "hms-catalog-1" --region us-east-1
Afficher les détails de la base de données : Get-database
Pour afficher les détails d'une base de données, passez le nom du catalogue et de la base de données à la commande get-database
, comme dans l'exemple suivant.
$ aws athena get-database --catalog-name hms-catalog-1 --database-name mydb
L'exemple de résultat suivant est au JSON format.
{ "Database": { "Name": "mydb", "Description": "My database", "Parameters": { "CreatedBy": "Athena", "EXTERNAL": "TRUE" } } }
Liste des bases de données dans un catalogue : List-databases
Pour répertorier les bases de données dans un catalogue, utilisez la commande list-databases
et spécifiez éventuellement une région, comme dans l'exemple suivant.
$ aws athena list-databases --catalog-name AwsDataCatalog --region us-west-2
L'exemple de résultat suivant est au JSON format.
{ "DatabaseList": [ { "Name": "default" }, { "Name": "mycrawlerdatabase" }, { "Name": "mydatabase" }, { "Name": "sampledb", "Description": "Sample database", "Parameters": { "CreatedBy": "Athena", "EXTERNAL": "TRUE" } }, { "Name": "tpch100" } ] }
Affichage des détails du tableau : G et-table-metadata
Pour afficher les métadonnées d'une table, y compris les noms de colonnes et les types de données, transmettez le nom du catalogue, de la base de données et de la table à la commande get-table-metadata
, comme dans l'exemple suivant.
$ aws athena get-table-metadata --catalog-name AwsDataCatalog --database-name mydb --table-name cityuseragent
L'exemple de résultat suivant est au JSON format.
{ "TableMetadata": { "Name": "cityuseragent", "CreateTime": 1586451276.0, "LastAccessTime": 0.0, "TableType": "EXTERNAL_TABLE", "Columns": [ { "Name": "city", "Type": "string" }, { "Name": "useragent1", "Type": "string" } ], "PartitionKeys": [], "Parameters": { "COLUMN_STATS_ACCURATE": "false", "EXTERNAL": "TRUE", "inputformat": "org.apache.hadoop.mapred.TextInputFormat", "last_modified_by": "hadoop", "last_modified_time": "1586454879", "location": "s3://amzn-s3-demo-bucket/", "numFiles": "1", "numRows": "-1", "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "rawDataSize": "-1", "serde.param.serialization.format": "1", "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe", "totalSize": "61" } } }
Affichage des métadonnées pour toutes les tables d'une base de données : L ist-table-metadata
Pour afficher les métadonnées de toutes les tables d'une base de données, transmettez le nom du catalogue et celui de la base de données à la commande list-table-metadata
. La commande list-table-metadata
est similaire à la commande get-table-metadata
, sauf que vous ne spécifiez pas de nom de table. Pour limiter le nombre de résultats, vous pouvez utiliser l'option --max-results
, comme dans l'exemple suivant.
$ aws athena list-table-metadata --catalog-name AwsDataCatalog --database-name sampledb --region us-east-1 --max-results 2
L'exemple de résultat suivant est au JSON format.
{ "TableMetadataList": [ { "Name": "cityuseragent", "CreateTime": 1586451276.0, "LastAccessTime": 0.0, "TableType": "EXTERNAL_TABLE", "Columns": [ { "Name": "city", "Type": "string" }, { "Name": "useragent1", "Type": "string" } ], "PartitionKeys": [], "Parameters": { "COLUMN_STATS_ACCURATE": "false", "EXTERNAL": "TRUE", "inputformat": "org.apache.hadoop.mapred.TextInputFormat", "last_modified_by": "hadoop", "last_modified_time": "1586454879", "location": "s3://amzn-s3-demo-bucket/", "numFiles": "1", "numRows": "-1", "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "rawDataSize": "-1", "serde.param.serialization.format": "1", "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe", "totalSize": "61" } }, { "Name": "clearinghouse_data", "CreateTime": 1589255544.0, "LastAccessTime": 0.0, "TableType": "EXTERNAL_TABLE", "Columns": [ { "Name": "location", "Type": "string" }, { "Name": "stock_count", "Type": "int" }, { "Name": "quantity_shipped", "Type": "int" } ], "PartitionKeys": [], "Parameters": { "EXTERNAL": "TRUE", "inputformat": "org.apache.hadoop.mapred.TextInputFormat", "location": "s3://amzn-s3-demo-bucket/", "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "serde.param.serialization.format": "1", "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe", "transient_lastDdlTime": "1589255544" } } ], "NextToken": "eyJsYXN0RXZhbHVhdGVkS2V5Ijp7IkhBU0hfS0VZIjp7InMiOiJ0Ljk0YWZjYjk1MjJjNTQ1YmU4Y2I5OWE5NTg0MjFjYTYzIn0sIlJBTkdFX0tFWSI6eyJzIjoiY2xlYXJpbmdob3VzZV9kYXRhIn19LCJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE1ODkzNDIwMjIsIm5hbm9zIjo2NTUwMDAwMDB9fQ==" }
Course à pied DDL et DML déclarations
Lorsque vous utilisez les DML instructions AWS CLI to run DDL et, vous pouvez transmettre le nom du catalogue de métastores Hive de deux manières différentes :
-
Directement dans les déclarations qui le soutiennent.
-
Au paramètre
--query-execution-context
Catalog
.
DDLdéclarations
L'exemple suivant transmet le nom du catalogue directement dans le cadre de l'show create table
DDLinstruction. La commande a été formatée pour être lisible.
$ aws athena start-query-execution --query-string "show create table hms-catalog-1.hms_tpch_partitioned.lineitem" --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
L'exemple d'DDLshow create table
instruction suivant utilise le Catalog
paramètre de --query-execution-context
pour transmettre le nom du catalogue de métastores Hive. hms-catalog-1
La commande a été formatée pour être lisible.
$ aws athena start-query-execution --query-string "show create table lineitem" --query-execution-context "Catalog=hms-catalog-1,Database=hms_tpch_partitioned" --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
DMLdéclarations
L'exemple d'DMLselect
instruction suivant transmet directement le nom du catalogue à la requête. La commande a été formatée pour être lisible.
$ aws athena start-query-execution --query-string "select * from hms-catalog-1.hms_tpch_partitioned.customer limit 100" --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
L'exemple d'DMLselect
instruction suivant utilise le Catalog
paramètre --query-execution-context
to pour transmettre le nom du catalogue de métastores Hive. hms-catalog-1
La commande a été formatée pour être lisible.
$ aws athena start-query-execution --query-string "select * from customer limit 100" --query-execution-context "Catalog=hms-catalog-1,Database=hms_tpch_partitioned" --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"