Memigrasikan skema dan data dari Apache Hive
Dokumen ini menjelaskan cara memigrasikan data, setelan keamanan, dan pipeline dari Apache Hive ke BigQuery.
Anda juga dapat menggunakan batch terjemahan SQL untuk memigrasikan skrip SQL secara massal, atau terjemahan SQL interaktif untuk menerjemahkan kueri ad hoc. Apache HiveQL didukung sepenuhnya oleh kedua layanan terjemahan SQL.
Mempersiapkan untuk migrasi
Bagian berikut menjelaskan cara mengumpulkan informasi tentang statistik tabel, metadata, dan setelan keamanan tabel untuk membantu Anda memigrasikan data warehouse dari Hive ke BigQuery.
Mengumpulkan informasi tabel sumber
Mengumpulkan informasi tentang tabel Hive sumber seperti jumlah baris,
jumlah kolom, jenis data kolom, ukuran, format input
data, dan lokasi. Informasi ini berguna dalam
proses migrasi dan juga untuk memvalidasi migrasi data. Jika Anda memiliki tabel Hive
bernama employees
dalam database bernama corp
, gunakan perintah berikut
untuk mengumpulkan informasi tabel:
# Find the number of rows in the table hive> SELECT COUNT(*) FROM corp.employees; # Output all the columns and their data types hive> DESCRIBE corp.employees; # Output the input format and location of the table hive> SHOW CREATE TABLE corp.employees; Output: … STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' LOCATION 'hdfs://demo_cluster/user/hive/warehouse/corp/employees' TBLPROPERTIES ( … # Get the total size of the table data in bytes shell> hdfs dfs -du -s TABLE_LOCATION
Konversi format tabel sumber
Beberapa format yang didukung Hive tidak dapat diserap ke BigQuery secara langsung.
Hive mendukung penyimpanan data dalam format berikut:
- File teks
- File RC
- File urutan
- File Avro
- File ORC
- File Parquet
BigQuery mendukung pemuatan data dari Cloud Storage dalam salah satu format file berikut:
- CSV
- JSON (Dibatasi baris baru)
- Avro
- ORC
- Parquet
BigQuery dapat memuat file data dalam format Avro, ORC, dan Parquet secara langsung tanpa memerlukan file skema. Untuk file teks yang tidak diformat sebagai CSV atau JSON (Newline yang dibatasi), Anda dapat menyalin data ke tabel Hive dalam format Avro, atau mengonversi skema tabel ke BigQuery skema JSON yang akan diberikan saat penyerapan.
Mengumpulkan setelan kontrol akses Hive
Hive dan BigQuery memiliki mekanisme kontrol akses yang berbeda. Mengumpulkan semua setelan kontrol akses Hive seperti peran, grup, anggota, dan hak istimewa yang diberikan kepada mereka. Petakan model keamanan di BigQuery pada level per set data dan terapkan ACL yang terperinci. Misalnya, pengguna Hive dapat dipetakan ke Akun Google dan grup HDFS dapat dipetakan ke grup Google. Akses dapat ditetapkan pada level set data. Gunakan perintah berikut untuk mengumpulkan setelan kontrol akses di Hive:
# List all the users > hdfs dfs -ls /user/ | cut -d/ -f3 # Show all the groups that a specific user belongs to > hdfs groups user_name # List all the roles hive> SHOW ROLES; # Show all the roles assigned to a specific group hive> SHOW ROLE GRANT GROUP group_name # Show all the grants for a specific role hive> SHOW GRANT ROLE role_name; # Show all the grants for a specific role on a specific object hive> SHOW GRANT ROLE role_name on object_type object_name;
Di Hive, Anda dapat langsung mengakses file HDFS di belakang tabel jika memiliki izin yang diperlukan. Dalam tabel BigQuery standar, setelah data dimuat ke dalam tabel, data akan disimpan di penyimpanan BigQuery. Anda dapat membaca data dengan menggunakan BigQuery Storage Read API, tetapi semua keamanan level IAM, baris, dan kolom masih diterapkan. Jika Anda menggunakan tabel eksternal BigQuery untuk membuat kueri data di Cloud Storage, akses ke Cloud Storage juga dikontrol oleh IAM.
Anda dapat membuat tabel BigLake yang memungkinkan Anda menggunakan connectors untuk membuat kueri data dengan Apache Spark, Trino, atau Apache Hive. BigQuery Storage API menerapkan kebijakan tata kelola level baris dan kolom untuk semua tabel BigLake di Cloud Storage atau BigQuery.
Migrasi data
Terdapat dua langkah untuk memigrasikan data Hive dari cluster sumber lokal atau berbasis cloud lainnya ke BigQuery:
- Menyalin data dari cluster sumber ke Cloud Storage
- Memuat data dari Cloud Storage ke BigQuery.
Bagian berikut membahas tentang memigrasi data Hive, memvalidasi data yang dimigrasikan, dan menangani migrasi data yang diserap secara terus-menerus. Contoh ditulis untuk tabel non-ACID.
Data kolom partisi
Di Hive, data dalam tabel berpartisi disimpan dalam struktur direktori.
Setiap partisi tabel dikaitkan dengan nilai tertentu
kolom partisi. File data itu sendiri tidak berisi data
kolom partisi. Gunakan perintah SHOW PARTITIONS
untuk mencantumkan berbagai
partisi dalam tabel berpartisi.
Contoh di bawah menunjukkan bahwa tabel Hive sumber dipartisi pada kolom
joining_date
dan department
. File data dalam tabel ini tidak
berisi data apa pun yang terkait dengan kedua kolom ini.
hive> SHOW PARTITIONS corp.employees_partitioned joining_date="2018-10-01"/department="HR" joining_date="2018-10-01"/department="Analyst" joining_date="2018-11-01"/department="HR"
Salah satu cara untuk menyalin kolom ini adalah dengan mengonversi tabel berpartisi menjadi tabel yang tidak dipartisi sebelum dimuat ke BigQuery:
- Buat tabel yang tidak dipartisi dengan skema yang mirip dengan tabel berpartisi.
- Muat data ke tabel yang tidak dipartisi dari tabel berpartisi sumber.
- Salin file data ini dalam tabel bertahap yang tidak dipartisi ke Cloud Storage.
- Muat data ke BigQuery dengan perintah
bq load
dan berikan nama kolom partisi jenisTIMESTAMP
atauDATE
, jika ada, sebagai argumentime_partitioning_field
.
Salin data ke Cloud Storage
Langkah pertama dalam migrasi data adalah menyalin data ke Cloud Storage. Gunakan Hadoop DistCp untuk menyalin data dari cluster lokal atau cluster cloud lainnya ke Cloud Storage. Simpan data Anda dalam bucket di region atau multi-region yang sama dengan set data tempat Anda ingin menyimpan data di BigQuery. Misalnya, jika Anda ingin menggunakan set data BigQuery yang sudah ada sebagai tujuan yang berada di region Tokyo, Anda harus memilih bucket regional Cloud Storage di Tokyo untuk menyimpan data.
Setelah memilih lokasi bucket Cloud Storage, Anda dapat menggunakan
perintah berikut untuk mencantumkan semua file data yang ada di lokasi tabel Hive employees
:
> hdfs dfs -ls hdfs://demo_cluster/user/hive/warehouse/corp/employees hdfs://demo_cluster/user/hive/warehouse/corp/employees/000000_0 hdfs://demo_cluster/user/hive/warehouse/corp/employees/000001_0 hdfs://demo_cluster/user/hive/warehouse/corp/employees/000002_0
Salin semua file dari atas ke Cloud Storage:
> hadoop distcp hdfs://demo_cluster/user/hive/warehouse/corp/employees gs://hive_data/corp/employees
Perlu diperhatikan bahwa Anda akan dikenai biaya penyimpanan data di Cloud Storage sesuai dengan Harga penyimpanan data.
Mungkin ada direktori staging yang menyimpan file perantara yang dibuat untuk
tugas kueri. Anda harus memastikan direktori tersebut sudah dihapus sebelum menjalankan
perintah bq load
.
Memuat data
BigQuery mendukung pemuatan data batch dalam berbagai format dari Cloud Storage. Pastikan set data BigQuery yang menjadi tujuan pemuatan data Anda sudah ada sebelum membuat tugas pemuatan.
Perintah berikut menampilkan data yang disalin dari Hive untuk tabel non-ACID:
> gsutil ls gs://hive_data/corp/employees/ gs://hive-migration/corp/employees/ gs://hive-migration/corp/employees/000000_0 gs://hive-migration/corp/employees/000001_0 gs://hive-migration/corp/employees/000002_0
Untuk memuat data Hive ke BigQuery, gunakan
perintah bq load
.
Anda dapat menggunakan karakter pengganti * di URL untuk memuat data dari beberapa
file yang memiliki awalan objek yang sama. Misalnya, gunakan perintah berikut
untuk memuat semua file yang memiliki gs://hive_data/corp/employees/
awalan yang sama:
bq load --source_format=AVRO corp.employees gs://hive_data/corp/employees/*
Tugas dapat memerlukan waktu lama untuk diselesaikan, maka Anda dapat menjalankannya
secara asinkron dengan menetapkan flag --sync
ke False
. Menjalankan perintah bq load
akan menghasilkan ID tugas dari tugas pemuatan yang dibuat, sehingga Anda dapat menggunakan perintah ini
untuk memeriksa status tugas.
Data ini mencakup detail seperti jenis tugas, status tugas, dan
pengguna yang menjalankan tugas.
Lakukan polling setiap status tugas pemuatan menggunakan ID tugasnya masing-masing dan periksa apakah ada tugas yang gagal dengan error. Jika terjadi kegagalan, BigQuery akan menggunakan pendekatan "Semua atau Tidak Ada" saat memuat data ke dalam tabel. Anda dapat mencoba mengatasi error dan membuat ulang tugas pemuatan lain dengan aman. Untuk mengetahui informasi lebih lanjut, lihat memecahkan masalah error.
Pastikan Anda memiliki kuota tugas
pemuatan yang cukup per tabel dan project. Jika Anda melebihi kuota, tugas pemuatan akan gagal dengan
error quotaExceeded
.
Perlu diperhatikan bahwa Anda tidak dikenai biaya untuk operasi pemuatan guna memuat data ke BigQuery dari Cloud Storage. Setelah data dimuat ke BigQuery, data tersebut akan dikenai harga penyimpanan BigQuery. Ketika tugas pemuatan berhasil selesai, Anda dapat menghapus file yang tersisa di Cloud Storage untuk menghindari timbulnya biaya penyimpanan data yang berlebihan.
Validasi
Setelah berhasil memuat data, Anda dapat memvalidasi data yang dimigrasikan dengan membandingkan jumlah baris di Hive dan tabel BigQuery. Lihat informasi tabel untuk mendapatkan detail tentang tabel BigQuery, seperti jumlah baris, jumlah kolom, kolom partisi, atau kolom pengelompokan. Untuk validasi tambahan, sebaiknya coba Alat validasi data.
Penyerapan berkelanjutan
Jika Anda terus menyerap data ke dalam tabel Hive, lakukan migrasi awal, lalu migrasikan hanya perubahan data inkremental ke BigQuery. Membuat skrip yang berjalan berulang kali untuk menemukan dan memuat data baru adalah hal yang umum. Ada banyak cara untuk melakukannya, dan bagian berikut menjelaskan satu pendekatan yang memungkinkan.
Anda dapat memantau progres migrasi di tabel database Cloud SQL, yang disebut sebagai tabel pelacakan di bagian berikut. Selama migrasi pertama kali dijalankan, simpan progresnya di tabel pelacakan. Untuk menjalankan migrasi berikutnya, gunakan informasi tabel pelacakan untuk mendeteksi apakah ada data tambahan yang telah diserap dan dapat dimigrasikan ke BigQuery.
Pilih kolom ID jenis INT64
, TIMESTAMP
, atau DATE
untuk membedakan
data inkremental. Ini disebut sebagai kolom inkremental.
Tabel berikut adalah contoh tabel tanpa partisi yang menggunakan
jenis TIMESTAMP
untuk kolom inkrementalnya:
+-----------------------------+-----------+-----------+-----------+-----------+ | timestamp_identifier | column_2 | column_3 | column_4 | column_5 | +-----------------------------+-----------+-----------+-----------+-----------+ | 2018-10-10 21\:56\:41 | | | | | | 2018-10-11 03\:13\:25 | | | | | | 2018-10-11 08\:25\:32 | | | | | | 2018-10-12 05\:02\:16 | | | | | | 2018-10-12 15\:21\:45 | | | | | +-----------------------------+-----------+-----------+-----------+-----------+
Tabel berikut adalah contoh tabel yang dipartisi pada kolom jenis DATE
partition_column
. Ini memiliki kolom inkremental jenis bilangan bulat int_identifier
di setiap partisi.
+---------------------+---------------------+----------+----------+-----------+ | partition_column | int_identifier | column_3 | column_4 | column_5 | +---------------------+---------------------+----------+----------+-----------+ | 2018-10-01 | 1 | | | | | 2018-10-01 | 2 | | | | | ... | ... | | | | | 2018-10-01 | 1000 | | | | | 2018-11-01 | 1 | | | | | 2018-11-01 | 2 | | | | | ... | ... | | | | | 2018-11-01 | 2000 | | | | +---------------------+---------------------+----------+----------+-----------+
Bagian berikut menjelaskan tentang memigrasi data Hive berdasarkan apakah data tersebut dipartisi atau tidak, dan apakah data tersebut memiliki kolom inkremental atau tidak.
Tabel yang tidak dipartisi tanpa kolom inkremental
Dengan asumsi tidak ada pemadatan file di Hive, Hive akan membuat file data baru saat menyerap data baru. Saat pengujian pertama dijalankan, simpan daftar file di tabel pelacakan dan selesaikan migrasi awal tabel Hive dengan menyalin file ini ke Cloud Storage dan memuatnya ke BigQuery.
> hdfs dfs -ls hdfs://demo_cluster/user/hive/warehouse/corp/employees Found 3 items hdfs://demo_cluster/user/hive/warehouse/corp/employees/000000_0 hdfs://demo_cluster/user/hive/warehouse/corp/employees/000001_0 hdfs://demo_cluster/user/hive/warehouse/corp/employees/000002_0
Setelah migrasi awal, beberapa data akan diserap di Hive. Anda hanya perlu memigrasikan data inkremental ini ke BigQuery. Pada proses migrasi berikutnya, cantumkan kembali file data dan bandingkan dengan informasi dari tabel pelacakan untuk mendeteksi file data baru yang belum dimigrasikan.
> hdfs dfs -ls hdfs://demo_cluster/user/hive/warehouse/corp/employees Found 5 items hdfs://demo_cluster/user/hive/warehouse/corp/employees/000000_0 hdfs://demo_cluster/user/hive/warehouse/corp/employees/000001_0 hdfs://demo_cluster/user/hive/warehouse/corp/employees/000002_0 hdfs://demo_cluster/user/hive/warehouse/corp/employees/000003_0 hdfs://demo_cluster/user/hive/warehouse/corp/employees/000004_0
Dalam contoh ini, dua file baru ada di lokasi tabel. Migrasikan data tersebut dengan menyalin file data baru ini ke Cloud Storage dan memuatnya ke tabel BigQuery yang ada.
Tabel yang tidak dipartisi dengan kolom inkremental
Dalam hal ini, Anda dapat menggunakan nilai maksimum kolom inkremental untuk menentukan apakah ada data baru yang ditambahkan. Saat melakukan migrasi awal, buat kueri tabel Hive untuk mengambil nilai maksimum kolom inkremental dan menyimpannya di tabel pelacakan:
hive> SELECT MAX(timestamp_identifier) FROM corp.employees; 2018-12-31 22:15:04
Pada proses migrasi berikutnya, ulangi kueri yang sama lagi untuk mengambil nilai maksimum saat ini kolom inkremental dan bandingkan dengan nilai maksimum sebelumnya dari tabel pelacakan untuk memeriksa apakah ada data inkremental:
hive> SELECT MAX(timestamp_identifier) FROM corp.employees; 2019-01-04 07:21:16
Jika nilai maksimum saat ini lebih besar daripada nilai maksimum sebelumnya, hal ini menunjukkan bahwa data inkremental telah diserap ke dalam tabel Hive seperti dalam contoh. Untuk memigrasikan data inkremental, buat tabel staging dan hanya muat data inkremental ke dalamnya.
hive> CREATE TABLE stage_employees LIKE corp.employees; hive> INSERT INTO TABLE stage_employees SELECT * FROM corp.employees WHERE timestamp_identifier>"2018-12-31 22:15:04" and timestamp_identifier<="2019-01-04 07:21:16"
Migrasikan tabel staging dengan mencantumkan file data HDFS, menyalinnya ke Cloud Storage, dan memuatnya ke tabel BigQuery yang ada.
Tabel berpartisi tanpa kolom inkremental
Penyerapan data ke tabel berpartisi dapat membuat partisi baru, menambahkan data inkremental ke partisi yang ada, atau melakukan keduanya. Dalam skenario ini, Anda dapat mengidentifikasi partisi yang diupdate tersebut, tetapi tidak dapat dengan mudah mengidentifikasi data yang telah ditambahkan ke partisi yang ada ini karena tidak ada kolom inkremental yang dapat dibedakan. Opsi lainnya adalah mengambil dan mengelola snapshot HDFS, tetapi snapshot dapat menimbulkan masalah performa pada Hive sehingga umumnya dinonaktifkan.
Saat memigrasikan tabel untuk pertama kalinya, jalankan perintah SHOW PARTITIONS
dan simpan informasi tentang berbagai partisi di tabel
pelacakan.
hive> SHOW PARTITIONS corp.employees partition_column=2018-10-01 partition_column=2018-11-01
Output di atas menunjukkan bahwa tabel employees
memiliki dua partisi. Versi
tabel pelacakan yang disederhanakan disediakan di bawah ini untuk menunjukkan cara
informasi ini dapat disimpan.
partition_information | file_path | gcs_copy_status | gcs_file_path | bq_job_id | ... |
---|---|---|---|---|---|
partition_column =2018-10-01 | |||||
partition_column =2018-11-01 |
Pada operasi migrasi berikutnya, jalankan perintah SHOW PARTITIONS
kembali untuk
mencantumkan semua partisi dan membandingkannya dengan informasi partisi dari
tabel pelacakan untuk memeriksa apakah ada partisi baru yang belum
dimigrasikan.
hive> SHOW PARTITIONS corp.employees partition_column=2018-10-01 partition_column=2018-11-01 partition_column=2018-12-01 partition_column=2019-01-01
Jika ada partisi baru yang diidentifikasi seperti dalam contoh, buat tabel staging dan hanya muat partisi baru ke dalamnya dari tabel sumber. Migrasikan tabel staging dengan menyalin file ke Cloud Storage dan memuatnya ke tabel BigQuery yang ada.
Tabel berpartisi dengan kolom inkremental
Dalam skenario ini, tabel Hive dipartisi dan kolom inkremental ada di setiap partisi. Peningkatan data yang terus diserap pada nilai kolom ini. Di sini, Anda dapat memigrasikan partisi baru seperti yang dijelaskan di bagian sebelumnya dan juga dapat memigrasikan data inkremental yang telah diserap ke dalam partisi yang ada.
Saat memigrasikan tabel untuk pertama kalinya, simpan nilai minimum dan maksimum kolom inkremental di setiap partisi bersama dengan informasi tentang partisi tabel dalam tabel pelacakan.
hive> SHOW PARTITIONS corp.employees partition_column=2018-10-01 partition_column=2018-11-01 hive> SELECT MIN(int_identifier),MAX(int_identifier) FROM corp.employees WHERE partition_column="2018-10-01"; 1 1000 hive> SELECT MIN(int_identifier),MAX(int_identifier) FROM corp.employees WHERE partition_column="2018-11-01"; 1 2000
Output di atas menunjukkan bahwa tabel karyawan memiliki dua partisi serta nilai minimum dan maksimum kolom inkremental di setiap partisi. Versi tabel pelacakan yang disederhanakan disediakan di bawah ini untuk menunjukkan cara informasi ini dapat disimpan.
partition_information | inc_col_min | inc_col_max | file_path | gcs_copy_status | ... |
---|---|---|---|---|---|
partition_column =2018-10-01 | 1 | 1.000 | |||
partition_column =2018-11-01 | 1 | 2.000 |
Pada operasi berikutnya, jalankan kueri yang sama untuk mengambil nilai maksimum saat ini di setiap partisi dan membandingkannya dengan nilai maksimum sebelumnya dari tabel pelacakan.
hive> SHOW PARTITIONS corp.employees partition_column=2018-10-01 partition_column=2018-11-01 partition_column=2018-12-01 partition_column=2019-01-01 hive> SELECT MIN(int_identifier),MAX(int_identifier) FROM corp.employees WHERE partition_column="2018-10-01";
Dalam contoh ini, dua partisi baru telah diidentifikasi dan beberapa data inkremental
telah diserap dalam partition_column=2018-10-01
partisi yang ada.
Jika ada data inkremental, buat tabel staging, muat data inkremental saja
ke tabel staging, salin data ke
Cloud Storage, dan muat data ke tabel
BigQuery yang ada.
Setelan keamanan
BigQuery menggunakan IAM untuk mengelola akses ke resource. Peran bawaan BigQuery memberikan akses terperinci untuk layanan tertentu, dan dimaksudkan untuk mendukung kasus penggunaan umum dan pola kontrol akses. Anda dapat menggunakan peran khusus untuk memberikan akses yang lebih mendetail dengan menyesuaikan sekumpulan izin.
Kontrol akses di tabel dan set data menentukan operasi yang boleh dilakukan oleh pengguna, grup, dan akun layanan pada tabel, tampilan, dan set data. Tampilan yang diotorisasi memungkinkan Anda membagikan hasil kueri dengan pengguna dan grup tertentu tanpa memberi mereka akses ke data sumber yang mendasarinya. Dengan keamanan level baris dan keamanan level kolom, Anda dapat membatasi siapa yang dapat mengakses baris atau kolom mana dalam tabel. Penyamaran data memungkinkan Anda mengaburkan data kolom secara selektif untuk sekelompok pengguna, sambil tetap mengizinkan akses ke kolom tersebut.
Saat menerapkan kontrol akses, Anda dapat memberikan akses kepada pengguna dan grup berikut:
- Pengguna melalui email: memberikan akses ke set data kepada Akun Google perorangan
- Kelompokkan menurut email: memberikan akses ke set data kepada semua anggota grup Google
- Domain: memberikan akses ke set data kepada semua pengguna dan grup di domain Google
- Semua Pengguna Terautentikasi: memberi semua pemegang Akun Google akses ke set data (menjadikan set data bersifat publik)
- Pemilik Project: memberi semua pemilik project akses ke set data
- Viewer Project: memberi semua viewer project akses ke set data
- Editor Project: memberi semua editor project akses ke set data
- Tampilan yang Diberi Otorisasi: memberikan akses tampilan ke set data
Perubahan pipeline data
Bagian berikut membahas cara mengubah pipeline data saat Anda bermigrasi dari Hive ke BigQuery.
Sqoop
Jika pipeline yang ada menggunakan Sqoop untuk mengimpor data ke HDFS atau Hive untuk diproses, ubah tugas untuk mengimpor data ke Cloud Storage.
Jika Anda mengimpor data ke HDFS, pilih salah satu hal berikut:
- Salin file output Sqoop ke Cloud Storage menggunakan Hadoop DistCp.
- Output file ke Cloud Storage secara langsung menggunakan konektor Cloud Storage. Konektor Cloud Storage adalah library Java open source yang memungkinkan Anda menjalankan tugas Apache Hadoop atau Apache Spark langsung pada data di Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Menginstal konektor Cloud Storage.
Jika Anda ingin Sqoop mengimpor data ke Hive yang berjalan di
Google Cloud, arahkan ke tabel Hive secara langsung dan gunakan
Cloud Storage sebagai warehouse Hive, bukan HDFS. Untuk melakukannya, tetapkan
hive.metastore.warehouse.dir
properti ke bucket Cloud Storage.
Anda dapat menjalankan tugas Sqoop tanpa mengelola cluster Hadoop menggunakan Dataproc untuk mengirimkan tugas Sqoop guna mengimpor data ke BigQuery.
Spark SQL dan HiveQL
Penerjemah SQL batch atau penerjemah SQL interaktif dapat menerjemahkan Spark SQL atau HiveQL ke GoogleSQL secara otomatis.
Jika tidak ingin memigrasikan Spark SQL atau HiveQL ke BigQuery, Anda dapat menggunakan Dataproc atau konektor BigQuery dengan Apache Spark.
ETL Hive
Jika sudah ada tugas ETL di Hive, Anda dapat mengubahnya dengan cara berikut untuk memigrasikannya dari Hive:
- Konversikan tugas ETL Hive menjadi tugas BigQuery dengan menggunakan penerjemah SQL batch.
- Gunakan Apache Spark untuk membaca dan menulis ke BigQuery menggunakan konektor BigQuery. Anda dapat menggunakan Dataproc untuk menjalankan tugas Spark dengan cara yang hemat biaya dengan bantuan cluster sementara.
- Tulis ulang pipeline Anda menggunakan SDK Apache Beam dan jalankan di Dataflow.
- Gunakan Apache Beam SQL untuk menulis ulang pipeline Anda.
Untuk mengelola pipeline ETL, Anda dapat menggunakan Cloud Composer (Apache Airflow) dan Template Alur Kerja Dataproc. Cloud Composer menyediakan alat untuk mengonversi alur kerja Oozie menjadi alur kerja Cloud Composer.
Dataflow
Jika Anda ingin memindahkan pipeline ETL Hive ke layanan cloud yang terkelola sepenuhnya, pertimbangkan untuk menulis pipeline data menggunakan Apache Beam SDK dan menjalankannya di Dataflow.
Dataflow adalah layanan terkelola untuk menjalankan pipeline pemrosesan data. Ini akan menjalankan program yang ditulis menggunakan framework open source Apache Beam. Apache Beam adalah model pemrograman terpadu yang memungkinkan Anda mengembangkan pipeline streaming dan batch.
Jika pipeline data Anda adalah perpindahan data standar, Anda dapat menggunakan template Dataflow untuk membuat pipeline Dataflow dengan cepat tanpa perlu menulis kode. Anda dapat merujuk ke template yang disediakan Google ini yang dapat Anda gunakan untuk membaca file teks dari Cloud Storage, menerapkan transformasi, dan menulis hasilnya ke tabel BigQuery.
Untuk lebih menyederhanakan pemrosesan data, Anda juga dapat mencoba Beam SQL yang memungkinkan Anda memproses data menggunakan pernyataan seperti SQL.