選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

AWS CLI 搭配 Hive 中繼存放區使用

焦點模式
AWS CLI 搭配 Hive 中繼存放區使用 - Amazon Athena

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

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

您可以使用 aws athena CLI 命令來管理您搭配 Athena 使用的 Hive 中繼存放區資料目錄。定義一或多個搭配 Athena 使用的目錄之後,您可以在 aws athena DDL 和 DML 命令中參考這些目錄。

使用 AWS CLI 管理 Hive 中繼存放區目錄

註冊目錄:Create-data-catalog

若要註冊資料目錄,請使用 create-data-catalog 命令。使用 name 參數指定要用於目錄的名稱。將 Lambda 函數的 ARN 傳遞給 parameters 引數的 metadata-function 選項。若要為新目錄建立標籤,請將 tags 參數與一或多個以空格分隔的 Key=key,Value=value 引數組搭配使用。

以下為註冊名為 hms-catalog-1 的 Hive 中繼存放區的範例。為了方便閱讀,命令已經過格式化處理。

$ 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

顯示目錄詳細資訊:Get-data-catalog

若要顯示目錄的詳細資訊,請將目錄的名稱傳遞給 get-data-catalog 命令,如下列範例所示。

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

以下樣本結果為 JSON 格式。

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

列出已註冊的目錄:List-data-catalogs

若要列示已註冊的目錄,請使用 list-data-catalogs 命令並選擇性地指定區域,如下列範例所示。列示的目錄永遠包括 AWS Glue在內。

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

以下樣本結果為 JSON 格式。

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

更新目錄:Update-data-catalog

若要更新資料目錄,請使用 update-data-catalog 命令,如下列範例所示。為了方便閱讀,命令已經過格式化處理。

$ 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

刪除目錄:Delete-data-catalog

若要刪除資料目錄,請使用 delete-data-catalog 命令,如下列範例所示。

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

顯示資料庫詳細資訊:Get-database

若要顯示資料庫的詳細資訊,請將目錄和資料庫的名稱傳遞給 get-database 命令,如下列範例所示。

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

以下樣本結果為 JSON 格式。

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

列出目錄中的資料庫:List-databases

若要列出目錄中的資料庫,請使用 list-databases 命令並選擇性地指定區域,如下列範例所示。

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

以下樣本結果為 JSON 格式。

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

顯示資料表詳細資訊:Get-table-metadata

若要顯示資料表的中繼資料,包括資料行名稱和資料類型,請將目錄、資料庫的名稱和資料表名稱傳遞給 get-table-metadata 命令,如下列範例所示。

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

以下樣本結果為 JSON 格式。

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

顯示資料庫中所有資料表的中繼資料:List-table-metadata

若要顯示資料庫中所有資料表的中繼資料,請將目錄的名稱和資料庫名稱傳遞給 list-table-metadata 命令。list-table-metadata 命令與 get-table-metadata 命令類似,但是您不指定資料表名稱。若要限制結果的數目,您可以使用 --max-results 選項,如下列範例所示。

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

以下樣本結果為 JSON 格式。

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

執行 DDL 和 DML 陳述式

當您使用 AWS CLI 執行 DDL 和 DML 陳述式時,您可以透過下列兩種方式之一傳遞 Hive 中繼存放區目錄的名稱:

  • 直接傳入支援它的陳述式。

  • 傳遞給 --query-execution-context Catalog 參數。

DDL 陳述式

下列範例會直接做為 show create table DDL 陳述式的一部分傳入目錄名稱。為了方便閱讀,命令已經過格式化處理。

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

下面的範例 DDL show create table 陳述式使用 --query-execution-contextCatalog 參數來傳遞 Hive 中繼存放區錄名稱 hms-catalog-1。為了方便閱讀,命令已經過格式化處理。

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

DML 陳述式

下列範例 DML select 陳述式將目錄名稱直接傳遞到查詢中。為了方便閱讀,命令已經過格式化處理。

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

下列範例 DML select 陳述式使用 --query-execution-contextCatalog 參數傳入 Hive 中繼存放區目錄名稱 hms-catalog-1。為了方便閱讀,命令已經過格式化處理。

$ 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"
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。