KV ke Tabel adalah algoritma yang dirancang untuk mengonversi data dalam format key-value (KV) menjadi format tabel biasa. Algoritma ini menggunakan kunci sebagai nama kolom dalam tabel dan mengisi nilai-nilai yang sesuai ke dalam baris masing-masing, sehingga memulihkan struktur tabular dari data untuk analisis dan pemrosesan lebih lanjut.
Informasi latar belakang
Definisi format tabel key-value: Kunci mewakili indeks nama kolom, dan nilai mendukung data bertipe BIGINT atau DOUBLE. Anda dapat mengimpor tabel key_map kustom ke dalam komponen ini. Tabel key_map berisi pemetaan antara nama kolom dan kunci. Baik tabel key_map diimpor atau tidak, komponen ini mengekspor tabel key_map untuk mencatat pemetaan antara nama kolom dan kunci setelah konversi, seperti 1:10, 2:20, dan 3:30.
Definisi format tabel key_map: Format tabel key_map berisi pemetaan antara nama kolom dan indeks serta informasi tipe data, yang sesuai dengan parameter col_name, col_index, dan col_datatype. Nilai dari ketiga parameter tersebut harus bertipe data STRING. Jika Anda tidak menentukan parameter col_datatype, nilai default dari parameter ini adalah double.
col_name | col_index | col_datatype |
col1 | 1 | bigint |
col2 | 2 | double |
Parameter komponen
Anda dapat menggunakan salah satu metode berikut untuk mengonfigurasi komponen KV ke Tabel:
Metode 1: Konfigurasikan komponen pada halaman pipeline
Konfigurasikan komponen pada halaman pipeline Machine Learning Designer.
Tab | Parameter | Deskripsi |
Fields Setting | KV Column | Nama kolom yang berisi data dalam format key-value. |
Appended Columns | Nama kolom tambahan. | |
KV Delimiter | Pemisah yang digunakan antara kunci dan nilai. Secara default, titik dua (:) digunakan. | |
KV Pair Delimiter | Pemisah yang digunakan antara pasangan key-value. Secara default, koma (,) digunakan. | |
Parameters Setting | Reserve the First 1,200 Columns | Menentukan apakah hanya akan menyimpan 1.200 kolom pertama jika jumlah kolom dalam tabel key_map setelah konversi melebihi 1.200. |
Tuning | Computing Cores | Jumlah inti. Sistem secara otomatis mengalokasikan inti yang digunakan untuk pelatihan berdasarkan volume data masukan. |
Memory Size per Core | Ukuran memori setiap inti. Sistem secara otomatis mengalokasikan memori berdasarkan volume data masukan. Unit: MB. |
Metode 2: Gunakan perintah PAI
Konfigurasikan komponen dengan menggunakan perintah PAI. Anda dapat menggunakan komponen SQL Script untuk menjalankan perintah PAI. Untuk informasi lebih lanjut, lihat SQL Script.
PAI -name KVToTable
-project algo_public
-DinputTableName=test
-DoutputTableName=test_out
-DoutputKeyMapTableName=test_keymap_out
-DkvColName=kv;Parameter | Diperlukan | Deskripsi | Nilai default |
inputTableName | Ya | Nama tabel masukan. | Tidak tersedia |
kvColName | Ya | Nama kolom yang berisi data dalam format key-value. | Tidak tersedia |
outputTableName | Ya | Nama tabel keluaran. | Tidak tersedia |
outputKeyMapTableName | Ya | Nama tabel indeks keluaran. | Tidak tersedia |
inputKeyMapTableName | Tidak | Nama tabel indeks masukan. | Tidak tersedia |
appendColName | Tidak | Nama kolom tambahan. | Tidak tersedia |
inputTablePartitions | Tidak | Partisi yang dipilih dari tabel masukan untuk pelatihan. Tentukan parameter ini dalam salah satu format berikut:
Catatan Jika Anda menentukan beberapa partisi, pisahkan mereka dengan koma (,). | Semua partisi |
kvDelimiter | Tidak | Pemisah yang digunakan antara kunci dan nilai. | Titik dua (:) |
itemDelimiter | Tidak | Pemisah yang digunakan antara pasangan key-value. | Koma (,) |
top1200 | Tidak | Menentukan apakah hanya akan menyimpan 1.200 kolom pertama. Nilai valid:
| true |
lifecycle | Tidak | Lifecycle tabel keluaran. | Tidak tersedia |
coreNum | Tidak | Jumlah inti yang digunakan dalam komputasi. Nilainya harus bilangan bulat positif. | Ditentukan oleh sistem |
memSizePerCore | Tidak | Ukuran memori setiap inti. Unit: MB. Nilai valid: (100,64 × 1024). | Ditentukan oleh sistem |
Contoh
Hasilkan Data Masukan
drop table if exists test; create table test as select * from ( select '1:1,2:2,3:-3.3' as kv union all select '1:10,2:20,3:-33.3' as kv ) tmp;Jalankan Perintah PAI
PAI -name KVToTable -project algo_public -DinputTableName=test -DoutputTableName=test_out -DoutputKeyMapTableName=test_keymap_out -DkvColName=kv;Deskripsi Keluaran
Tabel Keluaran
+------------+------------+------------+ | kv_1 | kv_2 | kv_3 | +------------+------------+------------+ | 1.0 | 2.0 | -3.3 | | 10.0 | 20.0 | -33.3 | +------------+------------+------------+Tabel Pemetaan Keluaran
+------------+------------+------------+ | col_name | col_index | col_type | +------------+------------+------------+ | kv_1 | 1 | double | | kv_2 | 2 | double | | kv_3 | 3 | double | +------------+------------+------------+
Skala algoritma
Kolom yang dikonversi mencakup kolom tambahan dan kolom yang dikonversi menggunakan komponen KV ke Tabel. Kolom yang dikonversi menggunakan komponen KV ke Tabel diekspor sebelum kolom tambahan. Jika jumlah kolom yang dikonversi melebihi jumlah maksimum kolom tabel key_map, dan parameter top1200 disetel ke true, jumlah maksimum kolom diekspor. Jika tidak, kesalahan dilaporkan. Maksimal 1.200 kolom dapat diekspor.
Jumlah catatan data tidak boleh melebihi 100 juta.
FAQ
T: Kolom mana yang dikonversi jika masukan termasuk tabel key_map?
A: Kolom yang dikonversi adalah kolom yang kuncinya ada di kedua tabel key_map dan tabel key-value.
T: Apa tipe data kolom kunci setelah konversi jika masukan termasuk tabel key_map?
A: Tipe data kolom kunci yang dikonversi sama dengan tipe data tabel key_map. Jika tipe data tabel key_map tidak ditentukan, tipe data kolom kunci yang dikonversi adalah DOUBLE.
T: Apa konvensi penamaan untuk kolom kunci yang dikonversi jika tabel key_map diimpor?
A: Konvensi penamaannya adalah Nama kolom dalam format key:value + "" + Key.
Karakter berikut tidak didukung:
%&()*+-./;<>=?
T: Mengapa nama kolom bertabrakan satu sama lain?
A: Jika Anda menentukan kolom tambahan dan nama kolom tambahan tersebut sama dengan nama kolom kunci yang dikonversi, kesalahan dilaporkan.
T: Jenis kolom apa yang dapat dikonversi?
A: Hanya kolom dengan tipe data numerik yang dapat dikonversi.
T: Apa yang terjadi jika panjang nama kolom melebihi 128 karakter?
A: Hanya 128 karakter pertama dari nama kolom yang disimpan.
T: Apa yang harus saya lakukan jika sebuah baris berisi kunci duplikat?
A: Hitung jumlah nilai yang sesuai dengan kunci-kunci tersebut.