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-results
verwenden 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"