在外部 Hive 中繼存儲查詢中省略目錄名稱 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在外部 Hive 中繼存儲查詢中省略目錄名稱

在外部 Hive 中繼存放區上執行DML和查DDL詢時,如果在查詢編輯器中選取該名稱,則可以省略目錄名稱來簡化查詢語法。此功能有某些限制。

DML陳述

使用已註冊的目錄執行查詢
  1. 您可以在資料庫使用語法 [[data_source_name].database_name].table_name 之前放置資料來源,如下列範例所示。

    select * from "hms-catalog-1".hms_tpch.customer limit 10;
  2. 如果您想要使用的資料來源已在查詢編輯器中選取,則可以省略查詢中的名稱,如下列範例所示。

    select * from hms_tpch.customer limit 10:
    使用預設資料來源的DML查詢。
  3. 當您在查詢中使用多個資料來源時,只能省略預設資料來源名稱,並且必須為任何非預設資料來源指定完整名稱。

    例如,假設已在查詢編輯器中選取 AwsDataCatalog 作為預設資料來源。下列查詢摘錄中的FROM陳述式完全限定前兩個資料來源名稱,但由於第三個資料來源位於資料目錄中,所以忽略第三個資料來源的名稱。 AWS Glue

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

DDL陳述

下列 Athena DDL 陳述式支援目錄名稱前置詞。其他DDL陳述式中的目錄名稱前置詞會造成語法錯誤。

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$'] )]

如同DML陳述式一樣,當您在查詢編輯器中選取資料來源和資料庫時,您可以省略查詢中的資料來源和資料庫前置詞。

於下圖可見,已在查詢編輯器中選取 hms-catalog-1 資料來源和 hms_tpch 資料庫。show create table customer 陳述式成立,即便查詢本身省略了 hms-catalog-1 字首和 hms_tpch 資料庫名稱。

使用預設目錄的DDL陳述式。

在JDBC連接字串中指定預設資料來源

當您使用 Athena JDBC 驅動程式將 Athena 連線至外部 Hive 中繼存放區時,您可以使用Catalog參數,在SQL編輯器 (例如SQL工作台) 的連接字串中指定預設資料來源名稱。

注意

若要下載最新的 Athena JDBC 驅動程式,請參閱搭配JDBC驅動程式使用 Athena

以下連接字符串指定默認數據源 hms-catalog-name.

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

下列影像顯示在 SQL Workbench 中設URL定的JDBC連線範例。

URL在SQL工作台中設定JDBC連線。