Den Katalognamen in externen Hive-Metastore-Abfragen weglassen - Amazon Athena

Den Katalognamen in externen Hive-Metastore-Abfragen weglassen

Wenn Sie DML- und DDL-Abfragen für externe Hive-Metastores ausführen, können Sie die Abfragesyntax vereinfachen, indem Sie den Katalognamen weglassen, wenn dieser Name im Abfrage-Editor ausgewählt ist. Für diese Funktionalität gelten bestimmte Einschränkungen.

DML-Anweisungen.

So führen Sie Abfragen mit registrierten Katalogen aus:
  1. Sie können den Datenquellennamen mithilfe der Syntax [[data_source_name].database_name].table_name vor die Datenbank einfügen, wie im folgenden Beispiel gezeigt.

    select * from "hms-catalog-1".hms_tpch.customer limit 10;
  2. Wenn die Datenquelle, die Sie verwenden möchten, in dem Abfrage-Editor bereits ausgewählt ist, können Sie den Namen wie im folgenden Beispiel aus der Abfrage weglassen.

    select * from hms_tpch.customer limit 10:
    Eine DML-Abfrage, die eine Standarddatenquelle verwendet.
  3. Wenn Sie mehrere Datenquellen in einer Abfrage verwenden, können Sie nur den Standarddatenquellennamen weglassen und müssen den vollständigen Namen für alle nicht standardmäßigen Datenquellen angeben.

    Angenommen, AwsDataCatalog ist im Abfrage-Editor als Standarddatenquelle ausgewählt. Die FROM-Anweisung im folgenden Abfrage-Auszug qualifiziert die ersten beiden Datenquellennamen vollständig, lässt jedoch den Namen für die dritte Datenquelle aus, da sie sich im AWS Glue-Datenkatalog befindet.

    ... FROM ehms01.hms_tpch.customer, "hms-catalog-1".hms_tpch.orders, hms_tpch.lineitem ...

DDL-Anweisungen

Die folgenden Athena-DDL-Anweisungen unterstützen Katalognamenpräfixe. Katalognamenpräfixe in anderen DDL-Anweisungen verursachen Syntaxfehler.

SHOW TABLES [IN [catalog_name.]database_name] ['regular_expression'] SHOW TBLPROPERTIES [[catalog_name.]database_name.]table_name [('property_name')] SHOW COLUMNS IN [[catalog_name.]database_name.]table_name SHOW PARTITIONS [[catalog_name.]database_name.]table_name SHOW CREATE TABLE [[catalog_name.][database_name.]table_name DESCRIBE [EXTENDED | FORMATTED] [[catalog_name.][database_name.]table_name [PARTITION partition_spec] [col_name ( [.field_name] | [.'$elem$'] | [.'$key$'] | [.'$value$'] )]

Wie bei DML-Anweisungen können Sie die Datenquelle und die Datenbankpräfixe aus der Abfrage weglassen, wenn die Datenquelle und die Datenbank im Abfrage-Editor ausgewählt werden.

Im folgenden Bild werden die hms-catalog-1-Datenquelle und die hms_tpch-Datenbank im Abfrage-Editor ausgewählt. Die show create table customer-Anweisung ist erfolgreich, obwohl das hms-catalog-1-Präfix und der hms_tpch-Datenbankname von der Abfrage selbst weggelassen werden.

Eine DDL-Anweisung, die den Standardkatalog verwendet.

Angeben einer Standard-Datenquelle in einer JDBC-Verbindungszeichenfolge

Wenn Sie den Athena-JDBC-Treiber verwenden, um Athena mit einem externen Hive-Metastore zu verbinden, können Sie den Catalog-Parameter verwenden, um den Standard-Namen der Datenquelle in Ihrer Verbindungszeichenfolge in einem SQL-Editor wie SQL Workbench anzugeben.

Anmerkung

Informationen zum Herunterladen des neuesten Athena-JDBC-Treibers finden Sie unter Verwenden von Athena mit dem JDBC-Treiber.

Die folgende Verbindungszeichenfolge gibt die Standarddatenquelle hms-catalog-name an.

jdbc:awsathena://AwsRegion=us-east-1;S3OutputLocation=s3://amzn-s3-demo-bucket/lambda/results/;Workgroup=AmazonAthenaPreviewFunctionality;Catalog=hms-catalog-name;

Das folgende Image zeigt ein Beispiel für eine JDBC-Verbindungs-URL, wie sie in SQL Workbench konfiguriert ist.

Konfigurieren einer JDBC-Verbindungs-URL in SQL Workbench.