

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
<a name="datastores-hive-cli"></a>

Vous pouvez utiliser les commandes CLI `aws athena` pour gérer les catalogues de données de métastore Hive que vous utilisez avec Athena. Une fois que vous avez défini un ou plusieurs catalogues à utiliser avec Athena, vous pouvez les référencer dans vos commandes DDL et DML `aws athena`.

## Utilisation du AWS CLI pour gérer les catalogues de métastores Hive
<a name="datastores-hive-cli-manage-hive-catalogs"></a>

### Enregistrement d'un catalogue : Create-data-catalog
<a name="datastores-hive-cli-registering-a-catalog"></a>

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. Passage de l'ARN de la fonction Lambda à l'option `metadata-function` de l'argument `parameters`. 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 : Get-data-catalog
<a name="datastores-hive-cli-showing-details-of-a-catalog"></a>

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 format JSON.

```
{
    "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 : List-data-catalogs
<a name="datastores-hive-cli-listing-registered-catalogs"></a>

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 format JSON.

```
{
    "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 : Update-data-catalog
<a name="datastores-hive-cli-updating-a-catalog"></a>

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 : Delete-data-catalog
<a name="datastores-hive-cli-deleting-a-catalog"></a>

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
<a name="datastores-hive-cli-showing-details-of-a-database"></a>

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 format JSON.

```
{
    "Database": {
        "Name": "mydb",
        "Description": "My database",
        "Parameters": {
            "CreatedBy": "Athena",
            "EXTERNAL": "TRUE"
        }
    }
}
```

### Liste des bases de données dans un catalogue : List-databases
<a name="datastores-hive-cli-listing-databases"></a>

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 format JSON.

```
{
    "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 : Get-table-metadata
<a name="datastores-hive-cli-showing-details-of-a-table"></a>

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 format JSON.

```
{
    "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 : List-table-metadata
<a name="datastores-hive-cli-showing-all-table-metadata"></a>

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 format JSON.

```
{
    "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=="
}
```

## Exécution d'instructions DDL et DML
<a name="datastores-hive-cli-running-ddl-and-dml"></a>

Lorsque vous utilisez les instructions DDL et DML AWS CLI pour exécuter, vous pouvez transmettre le nom du catalogue de métastores Hive de deux manières :
+ Directement dans les déclarations qui le soutiennent.
+ Au paramètre `--query-execution-context` `Catalog`.

### Instructions DDL
<a name="datastores-hive-cli-ddl-statements"></a>

L'exemple suivant transmet le nom du catalogue directement dans le cadre de l'instruction `show create table` DDL. 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 suivant d'instruction `show create table` DDL utilise le paramètre `Catalog` de `--query-execution-context` pour transmettre le nom du catalogue de métastore 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"
```

### Instructions DML
<a name="datastores-hive-cli-dml-statements"></a>

L'exemple suivant d'instruction `select` DML transmet directement le nom du catalogue dans 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 suivant d'instruction `select` DML utilise le paramètre `Catalog` de `--query-execution-context` pour transmettre le nom du catalogue de métastore 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"
```