Menggunakan tabel online untuk penyajian fitur real-time
Penting
Tabel Online berada dalam pratinjau publik. Selama pratinjau, menyerap data ke dalam Tabel Online menggunakan DBA Tanpa Server SQL. Harga akhir untuk Tabel Online akan tersedia pada tanggal mendatang.
Pratinjau Tabel Online tersedia di wilayah berikut: westus
, , eastus
, eastus2
northeurope
, westeurope
.
Tabel online adalah salinan baca-saja dari Tabel Delta yang disimpan dalam format berorientasi baris yang dioptimalkan untuk akses online. Tabel online adalah tabel tanpa server sepenuhnya yang menskalakan kapasitas throughput secara otomatis dengan beban permintaan dan memberikan latensi rendah dan akses throughput tinggi ke data skala apa pun. Tabel online dirancang untuk bekerja dengan aplikasi Databricks Model Serving, Feature Serving, dan retrieval-augmented generation (RAG) tempat mereka digunakan untuk pencarian data cepat.
Anda juga dapat menggunakan tabel online dalam kueri menggunakan Federasi Lakehouse. Saat menggunakan Federasi Lakehouse, Anda harus menggunakan gudang SQL Tanpa Server untuk mengakses tabel online. Hanya operasi baca (SELECT
) yang didukung. Kemampuan ini ditujukan hanya untuk tujuan interaktif atau penelusuran kesalahan dan tidak boleh digunakan untuk beban kerja penting produksi atau misi.
Membuat tabel online menggunakan UI Databricks adalah proses satu langkah. Cukup pilih tabel Delta di Catalog Explorer dan pilih Buat tabel online. Anda juga dapat menggunakan REST API atau Databricks SDK untuk membuat dan mengelola tabel online. Lihat Bekerja dengan tabel online menggunakan API.
Persyaratan
- Ruang kerja harus diaktifkan untuk Katalog Unity. Ikuti dokumentasi untuk membuat Metastore Katalog Unity, mengaktifkannya di ruang kerja, dan membuat Katalog.
- Model harus terdaftar di Unity Catalog untuk mengakses tabel online.
Bekerja dengan tabel online menggunakan UI
Bagian ini menjelaskan cara membuat dan menghapus tabel online, dan cara memeriksa status dan memicu pembaruan tabel online.
Membuat tabel online menggunakan UI
Anda membuat tabel online menggunakan Catalog Explorer. Untuk informasi tentang izin yang diperlukan, lihat Izin pengguna.
Untuk membuat tabel online, tabel Delta sumber harus memiliki kunci primer. Jika tabel Delta yang ingin Anda gunakan tidak memiliki kunci utama, buat dengan mengikuti instruksi berikut: Gunakan tabel Delta yang sudah ada di Katalog Unity sebagai tabel fitur.
Di Catalog Explorer, navigasikan ke tabel sumber yang ingin Anda sinkronkan ke tabel online. Dari menu Buat, pilih Tabel online.
Gunakan pemilih dalam dialog untuk mengonfigurasi tabel online.
Nama: Nama yang akan digunakan untuk tabel online di Katalog Unity.
Kunci Primer: Kolom dalam tabel sumber untuk digunakan sebagai kunci primer dalam tabel online.
Kunci Timeseries: (Opsional). Kolom dalam tabel sumber untuk digunakan sebagai kunci timeseries. Jika ditentukan, tabel online hanya menyertakan baris dengan nilai kunci timeseries terbaru untuk setiap kunci utama.
Mode sinkronisasi: Menentukan bagaimana alur sinkronisasi memperbarui tabel online. Pilih salah satu Rekam Jepret, Dipicu, atau Berkelanjutan.
Kebijakan Deskripsi Snapshot Alur berjalan sekali untuk mengambil rekam jepret tabel sumber dan menyalinnya ke tabel online. Perubahan berikutnya pada tabel sumber secara otomatis tercermin dalam tabel online dengan mengambil rekam jepret baru sumber dan membuat salinan baru. Konten tabel online diperbarui secara atomik. Dipicu Alur berjalan sekali untuk membuat salinan rekam jepret awal tabel sumber dalam tabel online. Tidak seperti mode sinkronisasi Snapshot, ketika tabel online di-refresh, hanya perubahan sejak eksekusi alur terakhir diambil dan diterapkan ke tabel online. Refresh inkremental dapat dipicu secara manual atau dipicu secara otomatis sesuai dengan jadwal. Berkelanjutan Alur berjalan terus menerus. Perubahan berikutnya pada tabel sumber diterapkan secara bertahap ke tabel online dalam mode streaming real time. Tidak diperlukan refresh manual.
Catatan
Untuk mendukung mode sinkronisasi Terpicu atau Berkelanjutan , tabel sumber harus mengaktifkan Ubah umpan data.
- Setelah selesai, klik Konfirmasi. Halaman tabel online muncul.
- Tabel online baru dibuat di bawah katalog, skema, dan nama yang ditentukan dalam dialog pembuatan. Di Catalog Explorer, tabel online ditunjukkan oleh .
Mendapatkan pembaruan status dan pemicu menggunakan UI
Untuk memeriksa status tabel online, klik nama tabel di Katalog untuk membukanya. Halaman tabel online muncul dengan tab Gambaran Umum terbuka. Bagian Penyerapan Data memperlihatkan status pembaruan terbaru. Untuk memicu pembaruan, klik Sinkronkan sekarang. Bagian Penyerapan Data juga menyertakan tautan ke alur Tabel Langsung Delta yang memperbarui tabel.
Menghapus tabel online menggunakan UI
Dari halaman tabel online, pilih Hapus dari menu kebab.
Bekerja dengan tabel online menggunakan API
Anda juga dapat menggunakan Databricks SDK atau REST API untuk membuat dan mengelola tabel online.
Untuk informasi referensi, lihat dokumentasi referensi untuk Databricks SDK untuk Python atau REST API.
Persyaratan
Databricks SDK versi 0.20 atau lebih tinggi.
Membuat tabel online menggunakan API
Databricks SDK - Python
from pprint import pprint
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import *
w = WorkspaceClient(host='https://xxx.databricks.com', token='xxx')
# Create an online table
spec = OnlineTableSpec(
primary_key_columns=["pk_col"],
source_table_full_name="main.default.source_table",
run_triggered=OnlineTableSpecTriggeredSchedulingPolicy.from_dict({'triggered': 'true'})
)
w.online_tables.create(name='main.default.my_online_table', spec=spec)
REST API
curl --request POST "https://xxx.databricks.com/api/2.0/online-tables" \
--header "Authorization: Bearer xxx" \
--data '{
"name": "main.default.my_online_table",
"spec": {
"run_triggered": {},
"source_table_full_name": "main.default.source_table",
"primary_key_columns": ["a"]
}
}'
Tabel online secara otomatis mulai disinkronkan setelah dibuat.
Mendapatkan status dan memicu refresh menggunakan API
Anda dapat melihat status dan spesifikasi tabel online dengan mengikuti contoh di bawah ini. Jika tabel online Anda tidak berkelanjutan dan Anda ingin memicu refresh manual datanya, Anda dapat menggunakan API alur untuk melakukannya.
Gunakan ID alur yang terkait dengan tabel online dalam spesifikasi tabel online dan mulai pembaruan baru pada alur untuk memicu refresh. Ini setara dengan mengklik Sinkronkan sekarang di UI tabel online di Catalog Explorer.
Databricks SDK - Python
pprint(w.online_tables.get('main.default.my_online_table'))
# Sample response
OnlineTable(name='main.default.my_online_table',
spec=OnlineTableSpec(perform_full_copy=None,
pipeline_id='some-pipeline-id',
primary_key_columns=['pk_col'],
run_continuously=None,
run_triggered={},
source_table_full_name='main.default.source_table',
timeseries_key=None),
status=OnlineTableStatus(continuous_update_status=None,
detailed_state=OnlineTableState.PROVISIONING,
failed_status=None,
message='Online Table creation is '
'pending. Check latest status in '
'Delta Live Tables: '
'https://xxx.databricks.com/pipelines/some-pipeline-id',
provisioning_status=None,
triggered_update_status=None))
# Trigger an online table refresh by calling the pipeline API. To discard all existing data
# in the online table before refreshing, set "full_refresh" to "True". This is useful if your
# online table sync is stuck due to, for example, the source table being deleted and recreated
# with the same name while the sync was running.
w.pipelines.start_update(pipeline_id='some-pipeline-id', full_refresh=True)
REST API
curl --request GET \
"https://xxx.databricks.com/api/2.0/online-tables/main.default.my_online_table" \
--header "Authorization: Bearer xxx"
# Sample response
{
"name": "main.default.my_online_table",
"spec": {
"run_triggered": {},
"source_table_full_name": "main.default.source_table",
"primary_key_columns": ["pk_col"],
"pipeline_id": "some-pipeline-id"
},
"status": {
"detailed_state": "PROVISIONING",
"message": "Online Table creation is pending. Check latest status in Delta Live Tables: https://xxx.databricks.com#joblist/pipelines/some-pipeline-id"
}
}
# Trigger an online table refresh by calling the pipeline API. To discard all existing data
# in the online table before refreshing, set "full_refresh" to "True". This is useful if your
# online table sync is stuck due to, for example, the source table being deleted and recreated
# with the same name while the sync was running.
curl --request POST "https://xxx.databricks.com/api/2.0/pipelines/some-pipeline-id/updates" \
--header "Authorization: Bearer xxx" \
--data '{
"full_refresh": true
}'
Menghapus tabel online menggunakan API
Databricks SDK - Python
w.online_tables.delete('main.default.my_online_table')
REST API
curl --request DELETE \
"https://xxx.databricks.com/api/2.0/online-tables/main.default.my_online_table" \
--header "Authorization: Bearer xxx"
Menghapus tabel online menghentikan sinkronisasi data yang sedang berlangsung dan merilis semua sumber dayanya.
Menyajikan data tabel online menggunakan fitur yang melayani titik akhir
Untuk model dan aplikasi yang dihosting di luar Databricks, Anda dapat membuat fitur yang melayani titik akhir untuk menyajikan fitur dari tabel online. Titik akhir membuat fitur tersedia pada latensi rendah menggunakan REST API.
Buat spesifikasi fitur.
Saat membuat spesifikasi fitur, Anda menentukan tabel Delta sumber. Ini memungkinkan spesifikasi fitur untuk digunakan dalam skenario offline dan online. Untuk pencarian online, titik akhir penyajian secara otomatis menggunakan tabel online untuk melakukan pencarian fitur latensi rendah.
Tabel Delta sumber dan tabel online harus menggunakan kunci primer yang sama.
Spesifikasi fitur dapat dilihat di tab Fungsi di Catalog Explorer.
from databricks.feature_engineering import FeatureEngineeringClient, FeatureLookup fe = FeatureEngineeringClient() fe.create_feature_spec( name="catalog.default.user_preferences_spec", features=[ FeatureLookup( table_name="user_preferences", lookup_key="user_id" ) ] )
Buat fitur yang melayani titik akhir.
Langkah ini mengasumsikan bahwa Anda telah membuat tabel online bernama
user_preferences_online_table
yang menyinkronkan data dari tabeluser_preferences
Delta . Gunakan spesifikasi fitur untuk membuat titik akhir penyajian fitur. Titik akhir membuat data tersedia melalui REST API menggunakan tabel online terkait.Catatan
Pengguna yang melakukan operasi ini harus menjadi pemilik tabel offline dan tabel online.
Databricks SDK - Python
from databricks.sdk import WorkspaceClient from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput workspace = WorkspaceClient() # Create endpoint endpoint_name = "fse-location" workspace.serving_endpoints.create_and_wait( name=endpoint_name, config=EndpointCoreConfigInput( served_entities=[ ServedEntityInput( entity_name=feature_spec_name, scale_to_zero_enabled=True, workload_size="Small" ) ] ) )
Python API
fe.create_feature_serving_endpoint( name="user-preferences", config=EndpointCoreConfig( served_entities=ServedEntity( feature_spec_name="catalog.default.user_preferences_spec", workload_size="Small", scale_to_zero_enabled=True ) ) )
Dapatkan data dari titik akhir penyajian fitur.
Untuk mengakses titik akhir API, kirim permintaan HTTP GET ke URL titik akhir. Contoh menunjukkan cara melakukan ini menggunakan API Python. Untuk bahasa dan alat lain, lihat Penyajian Fitur.
# Set up credentials export DATABRICKS_TOKEN=...
url = "https://{workspace_url}/serving-endpoints/user-preferences/invocations" headers = {'Authorization': f'Bearer {DATABRICKS_TOKEN}', 'Content-Type': 'application/json'} data = { "dataframe_records": [{"user_id": user_id}] } data_json = json.dumps(data, allow_nan=True) response = requests.request(method='POST', headers=headers, url=url, data=data_json) if response.status_code != 200: raise Exception(f'Request failed with status {response.status_code}, {response.text}') print(response.json()['outputs'][0]['hotel_preference'])
Menggunakan tabel online dengan aplikasi RAG
Aplikasi RAG adalah kasus penggunaan umum untuk tabel online. Anda membuat tabel online untuk data terstruktur yang dibutuhkan aplikasi RAG dan menghostingnya di titik akhir penyajian fitur. Aplikasi RAG menggunakan fitur yang melayani titik akhir untuk mencari data yang relevan dari tabel online.
Langkah-langkah umumnya adalah sebagai berikut:
- Buat fitur yang melayani titik akhir.
- Buat LangChainTool yang menggunakan titik akhir untuk mencari data yang relevan.
- Gunakan alat di agen LangChain untuk mengambil data yang relevan.
- Buat model yang melayani titik akhir untuk menghosting aplikasi LangChain.
Untuk instruksi langkah demi langkah, lihat contoh buku catatan berikut ini.
Contoh buku catatan
Buku catatan berikut ini menggambarkan cara menerbitkan fitur ke tabel online untuk penyajian real time dan pencarian fitur otomatis.
Buku catatan demo tabel online
Buku catatan berikut ini menggambarkan cara menggunakan tabel online Databricks dan fitur yang melayani titik akhir untuk mengambil aplikasi pembuatan tertambah (RAG).
Tabel online dengan buku catatan demo aplikasi RAG
Menggunakan tabel online dengan Databricks Model Serving
Anda dapat menggunakan tabel online untuk mencari fitur untuk Databricks Model Serving. Saat Anda menyinkronkan tabel fitur ke tabel online, model yang dilatih menggunakan fitur dari tabel fitur tersebut secara otomatis mencari nilai fitur dari tabel online selama inferensi. Tidak diperlukan konfigurasi tambahan.
FeatureLookup
Gunakan untuk melatih model.Untuk pelatihan model, gunakan fitur dari tabel fitur offline dalam set pelatihan model, seperti yang ditunjukkan dalam contoh berikut:
training_set = fe.create_training_set( df=id_rt_feature_labels, label='quality', feature_lookups=[ FeatureLookup( table_name="user_preferences", lookup_key="user_id" ) ], exclude_columns=['user_id'], )
Layani model dengan Databricks Model Serving. Model secara otomatis mencari fitur dari tabel online. Lihat Pencarian fitur otomatis dengan model MLflow di Databricks untuk detailnya.
Izin pengguna
Anda harus memiliki izin berikut untuk membuat tabel online:
SELECT
hak istimewa pada tabel sumber.USE_CATALOG
hak istimewa pada katalog tujuan.USE_SCHEMA
hakCREATE_TABLE
istimewa pada skema tujuan.
Untuk mengelola alur sinkronisasi data tabel online, Anda harus menjadi pemilik tabel online atau diberikan hak istimewa REFRESH pada tabel online. Pengguna yang tidak memiliki hak istimewa USE_CATALOG dan USE_SCHEMA pada katalog tidak akan melihat tabel online di Catalog Explorer.
Metastore Unity Catalog harus memiliki Privilege Model Versi 1.0.
Model izin titik akhir
Perwakilan layanan sistem unik secara otomatis dibuat untuk penyajian fitur atau model yang melayani titik akhir dengan izin terbatas yang diperlukan untuk mengkueri data dan menjalankan fungsi. Perwakilan layanan ini memungkinkan titik akhir untuk mengakses data dan sumber daya fungsi secara independen dari pengguna yang membuat sumber daya dan memastikan bahwa titik akhir dapat terus berfungsi jika pembuat meninggalkan ruang kerja.
Masa pakai perwakilan layanan sistem ini adalah masa pakai titik akhir. Log audit dapat menunjukkan catatan yang dihasilkan sistem untuk pemilik katalog Katalog Unity yang memberikan hak istimewa yang diperlukan kepada perwakilan layanan sistem ini.
Batasan
- Hanya satu tabel online yang didukung per tabel sumber.
- Tabel online dan tabel sumbernya dapat memiliki paling banyak 1000 kolom.
- Kolom tipe data ARRAY, MAP, atau STRUCT tidak dapat digunakan sebagai kunci utama dalam tabel online.
- Jika kolom digunakan sebagai kunci utama dalam tabel online, semua baris dalam tabel sumber di mana kolom berisi nilai null diabaikan.
- Tabel asing, sistem, dan internal tidak didukung sebagai tabel sumber.
- Tabel sumber tanpa umpan data perubahan Delta diaktifkan hanya mendukung mode sinkronisasi Rekam jepret .
- Tabel Berbagi Delta hanya didukung dalam mode sinkronisasi Snapshot .
- Nama katalog, skema, dan tabel tabel tabel online hanya boleh berisi karakter alfanumerik dan garis bawah, dan tidak boleh dimulai dengan angka. Tanda hubung (
-
) tidak diperbolehkan. - Kolom jenis String dibatasi hingga panjang 64KB.
- Panjang nama kolom dibatasi hingga 64 karakter.
- Ukuran maksimum baris adalah 2MB.
- Ukuran maksimum tabel online selama pratinjau publik yang terjaga adalah 200GB data pengguna yang tidak dikompresi.
- Ukuran gabungan semua tabel online dalam metastore Unity Catalog selama pratinjau publik yang terjaga adalah 1TB data pengguna yang tidak dikompresi.
- Kueri maksimum per detik (QPS) adalah 200. Batas ini dapat ditingkatkan menjadi 25.000 atau lebih. Hubungi tim akun Databricks Anda untuk meningkatkan batas.
Pemecahan Masalah
Saya tidak melihat opsi Buat tabel online
Penyebabnya biasanya adalah tabel yang Anda coba sinkronkan dari (tabel sumber) bukan jenis yang didukung. Pastikan Jenis Yang Dapat Diamankan tabel sumber (diperlihatkan di tab Detail Penjelajah Katalog) adalah salah satu opsi yang didukung di bawah ini:
TABLE_EXTERNAL
TABLE_DELTA
TABLE_DELTA_EXTERNAL
TABLE_DELTASHARING
TABLE_DELTASHARING_MUTABLE
TABLE_STREAMING_LIVE_TABLE
TABLE_STANDARD
TABLE_FEATURE_STORE
TABLE_FEATURE_STORE_EXTERNAL
TABLE_VIEW
TABLE_VIEW_DELTASHARING
TABLE_MATERIALIZED_VIEW
Saya tidak dapat memilih mode sinkronisasi Terpicu atau Berkelanjutan saat membuat tabel online
Ini terjadi jika tabel sumber tidak mengaktifkan umpan data perubahan Delta atau jika itu adalah Tampilan atau Tampilan Terwujud. Untuk menggunakan mode sinkronisasi inkremental , aktifkan ubah umpan data pada tabel sumber, atau gunakan tabel non-tampilan.
Pembaruan tabel online gagal atau status menunjukkan offline
Untuk mulai memecahkan masalah kesalahan ini, klik id alur yang muncul di tab Gambaran Umum tabel online di Catalog Explorer.
Pada halaman antarmuka pengguna alur yang muncul, klik entri yang bertuliskan "Gagal mengatasi aliran '__online_table".
Popup muncul dengan detail di bagian Detail kesalahan.
Penyebab umum kesalahan termasuk yang berikut ini:
Tabel sumber dihapus, atau dihapus dan dibuat ulang dengan nama yang sama, saat tabel online sedang disinkronkan. Ini sangat umum dengan tabel online berkelanjutan, karena terus disinkronkan.
Tabel sumber tidak dapat diakses melalui Komputasi Tanpa Server karena pengaturan firewall. Dalam situasi ini, bagian Detail kesalahan mungkin menampilkan pesan kesalahan "Gagal memulai layanan DLT pada kluster xxx...".
Ukuran agregat tabel online melebihi batas seluruh metastore 1 TiB (ukuran tidak dikompresi). Batas 1 TiB mengacu pada ukuran yang tidak dikompresi setelah memperluas tabel Delta dalam format berorientasi baris. Ukuran tabel dalam format baris bisa jauh lebih besar dari ukuran tabel Delta yang diperlihatkan di Catalog Explorer, yang mengacu pada ukuran tabel yang dikompresi dalam format berorientasi kolom. Perbedaannya bisa sebesar 100x, tergantung pada konten tabel.
Untuk memperkirakan ukuran tabel Delta yang tidak dikompresi dan diperluas baris, gunakan kueri berikut dari Gudang SQL Tanpa Server. Kueri mengembalikan perkiraan ukuran tabel yang diperluas dalam byte. Berhasil menjalankan kueri ini juga mengonfirmasi bahwa Komputasi Tanpa Server dapat mengakses tabel sumber.
SELECT sum(length(to_csv(struct(*)))) FROM `source_table`;
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk