Utilisez les AWS CLI métastores with Hive - Amazon Athena

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-functionoption de l'parametersargument. Pour créer des identifications pour le nouveau catalogue, utilisez le paramètre tags avec une ou plusieurs paires d'arguments Key=key,Value=value séparées par des espaces.

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 tableDDLinstruction. 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 tableinstruction 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'DMLselectinstruction 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'DMLselectinstruction 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"