Verwenden Sie die AWS CLI mit Hive-Metastoren - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie die AWS CLI mit Hive-Metastoren

Sie können aws athena CLI Befehle verwenden, um die Hive-Metastore-Datenkataloge zu verwalten, die Sie mit Athena verwenden. Nachdem Sie einen oder mehrere Kataloge für die Verwendung mit Athena definiert haben, können Sie in Ihren aws athena DDL Befehlen und auf diese Kataloge verweisen. DML

Verwenden von AWS CLI zur Verwaltung von Hive-Metastore-Katalogen

Registrierung eines Katalogs: C reate-data-catalog

Um einen Datenkatalog zu registrieren, verwenden Sie den Befehl create-data-catalog. Sie verwenden den Parameter name, um den Namen anzugeben, den Sie für den Katalog verwenden möchten. Übergeben Sie ARN die Lambda-Funktion an die metadata-function Option des parameters Arguments. Um Tags für den neuen Katalog zu erstellen, verwenden Sie den Parameter tags mit einem oder mehreren, durch Leerzeichen getrennten Argumentpaaren Key=key,Value=value.

Im folgenden Beispiel wird ein Hive-Metastore-Katalog mit dem Namen hms-catalog-1 registriert. Der Befehl wurde zur besseren Lesbarkeit formatiert.

$ 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

Katalogdetails werden angezeigt: G et-data-catalog

Um die Details eines Katalogs anzuzeigen, übergeben Sie den Namen des Katalogs an den Befehl get-data-catalog wie im folgenden Beispiel gezeigt.

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

Das folgende Beispielergebnis ist im 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" } } }

Auflistung registrierter Kataloge: L ist-data-catalogs

Um die registrierten Kataloge aufzulisten, verwenden Sie den Befehl list-data-catalogs und geben optional eine Region an, wie im folgenden Beispiel gezeigt. Die aufgelisteten Kataloge enthalten stets AWS Glue.

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

Das folgende Beispielergebnis ist im 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" } } ] }

Einen Katalog aktualisieren: U pdate-data-catalog

Um einen Datenkatalog zu aktualisieren, verwenden Sie den Befehl update-data-catalog wie im folgenden Beispiel gezeigt. Der Befehl wurde zur besseren Lesbarkeit formatiert.

$ 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

Einen Katalog löschen: D elete-data-catalog

Um einen Datenkatalog zu löschen, verwenden Sie den Befehl delete-data-catalog wie im folgenden Beispiel gezeigt.

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

Anzeige von Datenbankdetails: Get-database

Um die Details einer Datenbank anzuzeigen, übergeben Sie den Namen des Katalogs und der Datenbank an den Befehl get-database wie im folgenden Beispiel gezeigt.

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

Das folgende Beispielergebnis ist im JSON Format.

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

Auflistung von Datenbanken in einem Katalog: List-databases

Um die Datenbanken in einem Katalog aufzulisten, verwenden Sie den Befehl list-databases und geben optional eine Region an, wie im folgenden Beispiel gezeigt.

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

Das folgende Beispielergebnis ist im JSON Format.

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

Tabellendetails werden angezeigt: G et-table-metadata

Um die Metadaten für eine Tabelle einschließlich Spaltennamen und Datentypen anzuzeigen, übergeben Sie den Namen des Katalogs, der Datenbank und der Tabelle an den Befehl get-table-metadata wie im folgenden Beispiel gezeigt.

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

Das folgende Beispielergebnis ist im 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" } } }

Metadaten für alle Tabellen in einer Datenbank anzeigen: L ist-table-metadata

Um die Metadaten für alle Tabellen in einer Datenbank anzuzeigen, übergeben Sie den Namen des Katalogs und der Datenbank an den Befehl list-table-metadata. Der Befehl list-table-metadata ist dem Befehl get-table-metadata vergleichbar, abgesehen davon, dass kein Tabellenname angegeben wird. Um die Anzahl der Ergebnisse zu begrenzen, können Sie die Option --max-resultsverwenden wie im folgenden Beispiel gezeigt.

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

Das folgende Beispielergebnis ist im 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==" }

Laufen DDL und DML Anweisungen

Wenn Sie die DML Anweisungen AWS CLI to run DDL und verwenden, können Sie den Namen des Hive-Metastore-Katalogs auf zwei Arten übergeben:

  • Direkt an die Anweisungen, die ihn unterstützen.

  • An den Parameter --query-execution-context Catalog.

DDLAussagen

Im folgenden Beispiel wird der Katalogname direkt als Teil der show create table DDL Anweisung übergeben. Der Befehl wurde zur besseren Lesbarkeit formatiert.

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

In der folgenden DDL show create table Beispielanweisung wird der Hive-Metastore-Katalogname mit dem Catalog Parameter von --query-execution-context übergeben. hms-catalog-1 Der Befehl wurde zur besseren Lesbarkeit formatiert.

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

DMLAussagen

Die folgende DML select Beispielanweisung übergibt den Katalognamen direkt an die Abfrage. Der Befehl wurde zur besseren Lesbarkeit formatiert.

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

Die folgende DML select Beispielanweisung verwendet den Catalog Parameter von--query-execution-context, um den Hive-Metastore-Katalognamen zu übergeben. hms-catalog-1 Der Befehl wurde zur besseren Lesbarkeit formatiert.

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