쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Hive 메타스토어와 함께 AWS CLI 사용

포커스 모드

이 페이지에서

Hive 메타스토어와 함께 AWS CLI 사용 - 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 옵션에 전달합니다. 새 카탈로그에 대한 태그를 만들려면 하나 이상의 공백으로 구분된 Key=key,Value=value 인수 페어와 함께 tags 파라미터를 사용합니다.

다음 예제에서는 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"
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.