Gunakan AWS CLI metastores with Hive - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan AWS CLI metastores with Hive

Anda dapat menggunakan aws athena CLI perintah untuk mengelola katalog data metastore Hive yang Anda gunakan dengan Athena. Setelah Anda mendefinisikan satu atau lebih katalog untuk digunakan dengan Athena, Anda dapat mereferensikan katalog tersebut dalam perintah dan Anda. aws athena DDL DML

Menggunakan AWS CLI untuk mengelola katalog metastore Hive

Mendaftarkan katalog: C reate-data-catalog

Untuk mendaftarkan katalog data, Anda menggunakancreate-data-catalogPerintah. GunakannameParameter untuk menentukan nama yang ingin Anda gunakan sebagai katalog. Lewati ARN fungsi Lambda ke metadata-function opsi argumen. parameters Untuk membuat tanda untuk katalog baru, gunakantagsParameter dengan satu atau beberapa spasi yang dipisahkanKey=key,Value=valuepasangan argumen.

Contoh berikut register katalog metastore Hive bernamahms-catalog-1. Perintah telah diformat untuk dibaca.

$ 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

Menampilkan rincian katalog: G et-data-catalog

Untuk menampilkan detail katalog, lulus nama katalog untukget-data-catalogseperti pada contoh berikut.

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

Hasil sampel berikut dalam 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" } } }

Daftar katalog terdaftar: L ist-data-catalogs

Untuk daftar katalog terdaftar, gunakanlist-data-catalogsdan opsional menentukan wilayah seperti pada contoh berikut. Katalog yang terdaftar selalu mencakup AWS Glue.

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

Hasil sampel berikut dalam 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" } } ] }

Memperbarui katalog: U pdate-data-catalog

Untuk memperbarui katalog data, gunakanupdate-data-catalogseperti pada contoh berikut. Perintah telah diformat untuk dibaca.

$ 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

Menghapus katalog: D elete-data-catalog

Untuk menghapus katalog data, gunakandelete-data-catalogseperti pada contoh berikut.

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

Menampilkan rincian database: Get-Database

Untuk menampilkan detail basis data, lulus nama katalog dan basis data untukget-databaseseperti pada contoh berikut.

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

Hasil sampel berikut dalam JSON format.

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

Daftar database dalam katalog: Daftar-database

Untuk daftar basis data dalam katalog, gunakanlist-databasesdan opsional menentukan wilayah seperti pada contoh berikut.

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

Hasil sampel berikut dalam JSON format.

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

Menampilkan detail tabel: G et-table-metadata

Untuk menampilkan metadata untuk tabel, termasuk nama kolom dan tipe data, lulus nama katalog, basis data, dan nama tabel untukget-table-metadataseperti pada contoh berikut.

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

Hasil sampel berikut dalam 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" } } }

Menampilkan metadata untuk semua tabel dalam database: L ist-table-metadata

Untuk menampilkan metadata untuk semua tabel dalam basis data, lulus nama katalog dan basis data nama untuklist-table-metadataPerintah. Parameterlist-table-metadataserupa denganget-table-metadata, kecuali bahwa Anda tidak menentukan nama tabel. Untuk membatasi jumlah hasil, Anda dapat menggunakan--max-results, seperti pada contoh berikut.

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

Hasil sampel berikut dalam 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==" }

Berlari DDL dan DML pernyataan

Saat Anda menggunakan AWS CLI to run DDL dan DML statement, Anda dapat meneruskan nama katalog metastore Hive dengan salah satu dari dua cara:

  • Langsung ke pernyataan yang mendukungnya.

  • Ke--query-execution-context Catalogparameter.

DDLpernyataan

Contoh berikut masuk dalam nama katalog secara langsung sebagai bagian dari show create table DDL pernyataan. Perintah telah diformat untuk dibaca.

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

DDLshow create tablePernyataan contoh berikut menggunakan Catalog parameter --query-execution-context untuk meneruskan nama katalog metastore Hive. hms-catalog-1 Perintah telah diformat untuk dibaca.

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

DMLpernyataan

DMLselectPernyataan contoh berikut meneruskan nama katalog ke dalam query secara langsung. Perintah telah diformat untuk dibaca.

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

DMLselectPernyataan contoh berikut menggunakan Catalog parameter --query-execution-context untuk meneruskan nama katalog metastore Hive. hms-catalog-1 Perintah telah diformat untuk dibaca.

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