Usalo AWS CLI con Hive metastores - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usalo AWS CLI con Hive metastores

Puoi usare aws athena CLI i comandi per gestire i cataloghi di dati dei metastore Hive che usi con Athena. Dopo aver definito uno o più cataloghi da utilizzare con Athena, puoi fare riferimento a tali cataloghi nei aws athena DDL comandi and. DML

Utilizzo dei cataloghi metastore di AWS CLI Hive per gestire

Registrazione di un catalogo: C reate-data-catalog

Per registrare un catalogo dati, utilizzare il comando create-data-catalog. Utilizzare il parametro name per specificare il nome che si desidera utilizzare per il catalogo. Passa ARN la funzione Lambda all'metadata-functionopzione dell'parametersargomento. Per creare tag per il nuovo catalogo, utilizzare il parametro tags con una o più coppie di argomenti Key=key,Value=value separate da spazi.

Nell'esempio seguente viene registrato il catalogo del metastore Hive denominato hms-catalog-1. Il comando è stato formattato per la leggibilità.

$ 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

Mostra i dettagli del catalogo: G et-data-catalog

Per visualizzare i dettagli di un catalogo, passare il nome del catalogo al comando get-data-catalog, come nell'esempio seguente.

$ aws athena get-data-catalog --name "hms-catalog-1" --region us-east-1

Il seguente risultato di esempio è in JSON formato.

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

Elenco dei cataloghi registrati: L ist-data-catalogs

Per elencare i cataloghi registrati, utilizzare il comando list-data-catalogs e, facoltativamente, specificare una regione, come nell'esempio seguente. I cataloghi elencati includono sempre AWS Glue.

$ aws athena list-data-catalogs --region us-east-1

Il seguente risultato di esempio è in JSON formato.

{ "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" } } ] }

Aggiornamento di un catalogo: U pdate-data-catalog

Per aggiornare un catalogo dati, utilizzare il comando update-data-catalog, come nell'esempio seguente. Il comando è stato formattato per la leggibilità.

$ 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

Eliminazione di un catalogo: D elete-data-catalog

Per eliminare un catalogo dati, utilizzare il comando delete-data-catalog, come nell'esempio seguente.

$ aws athena delete-data-catalog --name "hms-catalog-1" --region us-east-1

Visualizzazione dei dettagli del database: get-database

Per visualizzare i dettagli di un database, passare il nome del catalogo e del database al comando get-database, come nell'esempio seguente.

$ aws athena get-database --catalog-name hms-catalog-1 --database-name mydb

Il seguente risultato di esempio è in JSON formato.

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

Elencazione dei database in un catalogo: list-databases

Per elencare i database in un catalogo, utilizzare il comando list-databases e, facoltativamente, specificare una regione, come nell'esempio seguente.

$ aws athena list-databases --catalog-name AwsDataCatalog --region us-west-2

Il seguente risultato di esempio è in JSON formato.

{ "DatabaseList": [ { "Name": "default" }, { "Name": "mycrawlerdatabase" }, { "Name": "mydatabase" }, { "Name": "sampledb", "Description": "Sample database", "Parameters": { "CreatedBy": "Athena", "EXTERNAL": "TRUE" } }, { "Name": "tpch100" } ] }

Visualizzazione dei dettagli della tabella: G et-table-metadata

Per visualizzare i metadati di una tabella, inclusi i nomi delle colonne e i tipi di dati, passare il nome del catalogo, del database e del nome della tabella al comando get-table-metadata, come nell'esempio seguente.

$ aws athena get-table-metadata --catalog-name AwsDataCatalog --database-name mydb --table-name cityuseragent

Il seguente risultato di esempio è in JSON formato.

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

Visualizzazione dei metadati per tutte le tabelle di un database: L ist-table-metadata

Per visualizzare i metadati per tutte le tabelle di un database, passare il nome del catalogo e del nome del database al comando list-table-metadata. Il comando list-table-metadata è simile al comando get-table-metadata, ad eccezione del fatto che non si specifica un nome di tabella. Per limitare il numero di risultati, è possibile utilizzare l'opzione --max-results, come nell'esempio seguente.

$ aws athena list-table-metadata --catalog-name AwsDataCatalog --database-name sampledb --region us-east-1 --max-results 2

Il seguente risultato di esempio è in JSON formato.

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

Esecuzione DDL e DML dichiarazioni

Quando si utilizzano le DML istruzioni AWS CLI to run DDL and, è possibile passare il nome del catalogo dei metastore Hive in due modi:

  • Direttamente nelle istruzioni che lo supportano.

  • Al parametro --query-execution-context Catalog.

DDLdichiarazioni

L'esempio seguente passa il nome del catalogo direttamente come parte dell'show create tableDDListruzione. Il comando è stato formattato per la leggibilità.

$ 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'DDLshow create tableistruzione di esempio seguente utilizza il Catalog parametro di --query-execution-context per passare il nome del catalogo del metastore Hive. hms-catalog-1 Il comando è stato formattato per la leggibilità.

$ 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"

DMLdichiarazioni

L'DMLselectistruzione di esempio seguente passa direttamente il nome del catalogo alla query. Il comando è stato formattato per la leggibilità.

$ 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'DMLselectistruzione di esempio seguente utilizza il Catalog parametro di --query-execution-context per passare il nome del catalogo del metastore Hive. hms-catalog-1 Il comando è stato formattato per la leggibilità.

$ 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"