Halaman ini menjelaskan cara menggunakan antarmuka administrator Dataproc Metastore.
Antarmuka administrator menyediakan alat terpusat untuk memeriksa dan mengelola metadata yang disimpan di layanan Dataproc Metastore Anda, tanpa harus terhubung ke cluster Dataproc atau instance Hive. Sebagai gantinya, Anda dapat mengelola metadata dengan Google Cloud CLI atau Dataproc Metastore API.
Misalnya, dengan menggunakan antarmuka administrator, Anda dapat menjalankan kueri SQL langsung di metadata backend untuk mengambil nama tabel tertentu. Proses ini melibatkan
lebih sedikit langkah daripada alur kerja biasa, seperti membuat
cluster Dataproc, terhubung ke cluster menggunakan SSH, memulai instance Hive,
dan akhirnya menjalankan kueri (misalnya, SELECT * FROM table_name
).
Dengan demikian, antarmuka administrator dapat membantu Anda menghemat waktu dan mengurangi jumlah Google Cloud resource yang diperlukan untuk mengambil data Anda.
Sebelum memulai
- Aktifkan Dataproc Metastore di project Anda.
- Buat layanan Dataproc Metastore.
- Mengimpor metadata ke Dataproc Metastore.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk menggunakan antarmuka administrator Dataproc Metastore, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda, berdasarkan prinsip hak istimewa paling rendah:
-
Untuk membuat kueri metadata Dataproc Metastore:
Administrator kueri metadata (
roles/metastore.metadataQueryAdmin
) di akun pengguna atau akun layanan -
Untuk mengubah lokasi resource metadata Anda, termasuk database, tabel, dan partisi, atau memindahkan tabel ke database lain:
-
Administrator perubahan metadata (
roles/metastore.metadataMutateAdmin
) di akun pengguna atau akun layanan -
Dataproc Metastore Editor (
roles/metastore.editor
) di akun pengguna atau akun layanan
-
Administrator perubahan metadata (
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk menggunakan antarmuka administrator Dataproc Metastore. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk menggunakan antarmuka administrator Dataproc Metastore:
-
Untuk membuat kueri metadata Dataproc Metastore:
metastore.services.queryMetadata
-
Untuk mengubah atau memindahkan tabel Dataproc Metastore:
metastore.services.mutateMetadata
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Untuk mengetahui informasi selengkapnya tentang peran dan izin Dataproc Metastore tertentu, lihat Ringkasan Identity and Access Management Dataproc Metastore.Operasi administrator yang didukung
Anda hanya dapat menjalankan operasi antarmuka administrator menggunakan gcloud CLI atau Dataproc Metastore API. Operasi antarmuka administrator tidak didukung di konsol Google Cloud .
Antarmuka administrator mendukung operasi berikut.
Operasi hanya baca.
- Kueri metadata.
Operasi baca dan tulis.
- Mengubah lokasi resource metadata Anda, termasuk database, tabel, dan partisi.
- Mengubah properti tabel, seperti pasangan nilai kunci kustom.
- Pindahkan tabel ke database lain.
Jika antarmuka administrator tidak mendukung operasi lain, Anda dapat
mengirim kueri ke metastore Hive
secara langsung.
Misalnya, untuk mencantumkan semua tabel dalam instance Dataproc Metastore, Anda dapat mengkueri skema metastore Hive secara langsung. Dalam hal ini, Anda dapat menjalankan
select * from TBLS
untuk mencantumkan semua tabel yang disimpan di layanan Anda.
Mengkueri metadata
Operasi ini memungkinkan Anda mencari informasi metadata di database menggunakan kueri SQL. Setelah Anda menjalankan kueri, hasilnya akan ditransfer ke bucket artefak Google Cloud Anda.
Sebelum menjalankan operasi ini, perhatikan pertimbangan berikut:
- Operasi yang didukung hanya mencakup kueri
read-only
MySQL atau Spanner. Jika kueri mencoba mengubah data, operasi akan gagal. - File output berisi maksimum 1.000 baris. Konfigurasi ini tidak dapat diubah.
File output tidak otomatis dihapus. Sebagai gantinya, Anda harus menghapusnya secara manual dari bucket Google Cloud . Jika tidak menghapusnya, Anda mungkin dikenai biaya penyimpanan tambahan.
gcloud CLI
Untuk membuat kueri metadata, jalankan perintah
gcloud metastore services query-metadata
berikut:gcloud metastore services query-metadata SERVICE \ --location=LOCATION \ --query=QUERY
Ganti kode berikut:
SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: Google Cloud region tempat layanan Dataproc Metastore Anda berada.QUERY
: kueri SQL untuk menargetkan metadata Anda.- Jika Anda menggunakan database MySQL, gunakan kueri MySQL biasa.
- Jika Anda menggunakan database Spanner, gunakan kueri GoogleSQL.
Lihat file output di bucket artefak Google Cloud Anda.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-X POST -d '{"query": "QUERY"}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:queryMetadata
Ganti kode berikut:
QUERY
: kueri SQL yang Anda gunakan untuk menargetkan metadata.- Jika Anda menggunakan database MySQL, gunakan kueri MySQL biasa.
- Jika Anda menggunakan database Spanner, gunakan kueri GoogleSQL.
PROJECT_ID
: ID Google Cloud project tempat layanan Dataproc Metastore berada.SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: region tempat Dataproc Metastore Anda berada.
Contoh berikut menunjukkan contoh perintah yang menjalankan kueri select *
dari database bernama DBS.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" -X POST -d '{"query": "select * from DBS;"}' \
https://metastore.googleapis.com/projects/dpms/locations/us-central1/services/dpms1:queryMetadata
Menafsirkan output operasi metadata kueri
Saat pertama kali menjalankan perintah metadata kueri, Dataproc Metastore akan otomatis membuat folder Google Cloud di bucket artefak Anda. Google Cloud
Folder ini diberi nama query-results
. Setelah setiap eksekusi kueri (panggilan API) berhasil,
folder baru dibuat di dalam folder query-results
(yang diberi nama dengan
UUID yang dibuat secara acak).
Setiap folder baru berisi file result manifest
dengan hasil kueri Anda. Lokasi folder ini ditampilkan dalam respons panggilan API Anda.
Misalnya, dalam respons, kolom resultManifestUri
berisi lokasi file.
"response": {
"@type": "type.googleapis.com/google.cloud.metastore.QueryMetadataResponse",
"resultManifestUri": "gs://gcs-bucket-6a3638b8-e319-46363-ad33-e632a5e/query-results/800156f5-2d13-4b80-bec3-2345a9e880f6/result-manifest"
}
Output file result manifest
mirip dengan berikut ini:
{
"status": {
"code": 0,
"message": "Query results are successfully uploaded to cloud storage",
"details": []
},
"filenames": ["result-001"]
}
Detail file manifes hasil:
- Kolom
status
menunjukkan apakah kueri berhasil atau gagal. - Jika eksekusi kueri berhasil, kolom
filenames
akan mencantumkan semua file yang dibuat. File ini berada di folder yang sama dengan fileresult manifest
. - Jika kueri menghasilkan kegagalan, kolom
details
akan menampilkan pesan error.
Mengubah lokasi resource metadata Anda
Operasi ini memungkinkan Anda mengubah lokasi resource database, tabel, atau partisi.
Saat Anda menjalankan perintah ini, perintah hanya akan mengupdate direktori induk atau resource metadata yang sesuai. Perintah ini tidak mentransfer data yang ada ke lokasi baru.
gcloud CLI
Untuk mengubah lokasi resource metadata, jalankan perintah
gcloud metastore services alter-metadata-resource-location
berikut:gcloud metastore services alter-metadata-resource-location SERVICE \ --location=LOCATION \ --resource_name=RESOURCE_NAME \ --location_uri=LOCATION_URI
Ganti kode berikut:
SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: Google Cloud region tempat layanan Dataproc Metastore Anda berada.RESOURCE_NAME
: nama database, tabel, atau partisi yang Anda ubah.LOCATION_URI
: Jalur Cloud Storage baru untuk isiRESOURCE_NAME
. Nilai ini adalah jalur tempat Anda memindahkan lokasi resource metadata. Jalur ini harus diawali dengangs://
. Contohnya,gs://bucket/object
Pastikan perubahan lokasi resource berhasil.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"resource_name": "RESOURCE_NAME", "location_uri":"LOCATION_URI"}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:alterLocation
Ganti kode berikut:
PROJECT_ID
: ID Google Cloud project tempat layanan Dataproc Metastore berada.SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: region tempat Dataproc Metastore Anda berada.RESOURCE_NAME
: nama database, tabel, atau partisi yang Anda ubah.LOCATION_URI
: Jalur Cloud Storage baru untuk isiRESOURCE_NAME
. Nilai ini adalah jalur tempat Anda memindahkan lokasi resource metadata. Jalur ini harus diawali dengangs://
. Contohnya,gs://bucket/object
Contoh berikut menunjukkan contoh perintah yang memindahkan tabel bernama
test-table2
ke bucket Cloud Storage baru.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST -d '{"resource_name": "databases/testdb1/tables/test-table2",
"location_uri":"gs://gcs-bucket-dpms1-9425bd83-b794-4f1c-9e79-2d833f758cc1/empty"}'
https://metastore.googleapis.com/projects/dpms/locations/us-central1/services/dpms1:alterLocation
Mengubah properti tabel
Operasi ini memungkinkan Anda mengubah properti tabel, seperti pasangan nilai kunci kustom yang Anda gunakan untuk menyimpan data. Misalnya, Anda dapat mengubah
pasangan nilai kunci properties.customerID_1
menjadi properties.customerID_2
.
gcloud CLI
Untuk mengubah properti tabel, jalankan perintah
gcloud metastore services alter-table-properties
berikut:gcloud metastore services alter-table-properties SERVICE \ --location=LOCATION \ --table-name=TABLE_NAME \ --update-mask=UPDATE_MASK \ --properties=PROPERTIES
Ganti kode berikut:
SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: Google Cloud region tempat layanan Dataproc Metastore Anda berada.TABLE_NAME
: nama tabel yang berisi properti yang Anda ubah dalam format berikut,databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: nilai properti yang ada yang Anda perbarui. Gunakan daftar yang dipisahkan koma untuk mendeskripsikan pasangan nilai kunci, misalnya,properties.1,properties.2,properties.3,...
.PROPERTIES
: properti baru untuk tabel Anda. Gunakan daftar yang dipisahkan koma untuk mendeskripsikan pasangan nilai kunci. Contoh,a=1,b=2,c=3,...
. Nilai yang Anda cantumkan di sini akan menggantikan nilai diUPDATE_MASK
.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"table_name": "TABLE_NAME", "update_mask":"UPDATE_MASK", "properties":PROPERTIES}'\
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:alterTableProperties
Ganti kode berikut:
SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: Google Cloud region tempat layanan Dataproc Metastore Anda berada.TABLE_NAME
: nama tabel yang berisi properti yang Anda ubah dalam format berikut,databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: nilai properti yang ada yang Anda perbarui. Gunakan daftar yang dipisahkan koma untuk mendeskripsikan pasangan nilai kunci, misalnya,properties.1,properties.2,properties.3,...
.PROPERTIES
: properti baru untuk tabel Anda. Gunakan daftar yang dipisahkan koma untuk mendeskripsikan pasangan nilai kunci, misalnya,a=1,b=2,c=3,...
. Nilai yang Anda cantumkan di sini akan menggantikan nilai diUPDATE_MASK
.
Contoh berikut menunjukkan contoh perintah yang mengubah properti tabel
tabel bernama test-table
. Dalam contoh ini, pasangan nilai kunci yang ada,
properties.customerID_1
diperbarui ke nilai baru properties.customerID_2
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
-X POST -d '{"table_name": "databases/default/tables/test-table", "update_mask":{"paths":"properties.customerID_1"}, "properties":{"customerID_1":"customerID_2"}}' https://metastore.googleapis.com/projects/dpms-p
Memindahkan tabel ke database lain
Operasi ini memungkinkan Anda memindahkan tabel internal (tabel terkelola) ke database lain. Dalam hal ini, direktori induk database dan datanya dipindahkan.
Anda tidak dapat memindahkan data yang disimpan dalam tabel eksternal.
gcloud CLI
Untuk memindahkan tabel ke database lain, jalankan perintah
gcloud metastore services move-table-to-database
berikut:gcloud metastore services move-table-to-database SERVICE \ --location=LOCATION \ --db_name=DB_NAME \ --table_name=TABLE_NAME \ --destination_db_name=DESTINATION_DB_NAME
Ganti kode berikut:
SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: Google Cloud region tempat layanan Dataproc Metastore Anda berada.DB_NAME
: nama database sumber yang berisi tabel yang ingin Anda pindahkan.TABLE_NAME
: nama tabel yang ingin Anda pindahkan.DESTINATION_DB_NAME
: nama database baru tempat Anda ingin memindahkan tabel.
Verifikasi bahwa perubahan tabel berhasil.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"table_name": "TABLE_NAME", "db_name": "DB_NAME", "destination_db_name": "DESTINATION_DB_NAME"}'\
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:moveTableToDatabase
Ganti kode berikut:
PROJECT_ID
: Google Cloud project ID tempat layanan Dataproc Metastore Anda berada.SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: region tempat Dataproc Metastore Anda berada.DB_NAME
: nama database sumber yang berisi tabel yang ingin Anda pindahkan.TABLE_NAME
: nama tabel yang ingin Anda pindahkan.DESTINATION_DB_NAME
: nama database baru yang ingin Anda gunakan untuk memindahkan tabel.
Contoh berikut menunjukkan contoh perintah yang memindahkan database bernama testdb1
ke database lain bernama testdb2
.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
-X POST -d '{"table_name": "testtb1", "db_name": "testdb1",
"destination_db_name": "testdb2"}' https://metastore.googleapis.com/projects/dpms/locations/asia-northeast2/services/dpms1:moveTableToDatabase