Bagikan melalui


Referensi kebijakan komputasi

Artikel ini adalah referensi untuk definisi kebijakan komputasi. Artikel ini mencakup referensi atribut kebijakan dan jenis batasan yang tersedia. Ada juga contoh kebijakan yang dapat Anda referensikan untuk kasus penggunaan umum.

Apa itu definisi kebijakan?

Definisi kebijakan adalah aturan kebijakan individual yang dinyatakan dalam JSON. Definisi dapat menambahkan aturan ke salah satu atribut yang dikontrol dengan API Kluster. Misalnya, definisi ini menetapkan waktu penentuan otomatis default, melarang pengguna menggunakan kumpulan, dan menerapkan penggunaan Photon:

{
   "autotermination_minutes" : {
    "type" : "unlimited",
    "defaultValue" : 4320,
    "isOptional" : true
  },
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "runtime_engine": {
    "type": "fixed",
    "value": "PHOTON",
    "hidden": true
  }
}

Hanya ada satu batasan per atribut. Jalur atribut mencerminkan nama atribut API. Untuk atribut berlapis, jalur menggabungkan nama atribut berlapis menggunakan titik. Atribut yang tidak ditentukan dalam definisi kebijakan tidak akan dibatasi.

Atribut yang didukung

Kebijakan mendukung semua atribut yang dikontrol dengan API Kluster. Jenis pembatasan yang dapat Anda tempatkan pada atribut dapat bervariasi per pengaturan berdasarkan jenisnya dan kaitannya dengan elemen UI. Anda tidak dapat menggunakan kebijakan untuk menentukan izin komputasi.

Anda juga dapat menggunakan kebijakan untuk mengatur DBA maks per jam dan jenis kluster. Lihat Jalur atribut virtual.

Tabel berikut mencantumkan jalur atribut kebijakan yang didukung:

Jalur atribut Tipe Deskripsi
autoscale.max_workers angka opsional Ketika disembunyikan, hapus bidang jumlah pekerja maksimum dari UI.
autoscale.min_workers angka opsional Ketika disembunyikan, hapus bidang jumlah pekerja minimal dari UI.
autotermination_minutes number Nilai 0 mewakili tanpa penghentian otomatis. Ketika disembunyikan, hapus kotak centang penghentian otomatis dan input nilai dari UI.
azure_attributes.availability string Mengontrol komputasi menggunakan instans sesuai permintaan atau spot (ON_DEMAND_AZURE atau SPOT_WITH_FALLBACK_AZURE).
azure_attributes.first_on_demand number Mengontrol jumlah simpul yang akan diletakkan pada instans sesuai permintaan.
azure_attributes.spot_bid_max_price number Mengontrol harga maksimum untuk instans spot Azure.
cluster_log_conf.path string URL tujuan dari file log.
cluster_log_conf.type string Jenis tujuan log. DBFS adalah satu-satunya nilai yang dapat diterima.
cluster_name string Nama kluster.
custom_tags.* string Kontrol nilai tag tertentu dengan menambahkan nama tag, misalnya: custom_tags.<mytag>.
data_security_mode string Mengatur mode akses kluster. Katalog Unity memerlukan SINGLE_USER atau USER_ISOLATION (mode akses bersama di UI). Nilai NONE berarti tidak ada fitur keamanan yang diaktifkan.
docker_image.basic_auth.password string Kata sandi untuk autentikasi dasar citra Databricks Container Services.
docker_image.basic_auth.username string Nama pengguna untuk autentikasi dasar citra Databricks Container Services.
docker_image.url string Mengontrol URL citra Databricks Container Services. Ketika disembunyikan, menghapus bagian Databricks Container Services dari UI.
driver_node_type_id string opsional Ketika disembunyikan, menghapus pilihan jenis node driver dari UI.
enable_local_disk_encryption Boolean Atur ke true untuk mengaktifkan, atau false untuk menonaktifkan, mengenkripsi disk yang dilampirkan secara lokal ke kluster (seperti yang ditentukan melalui API).
init_scripts.*.workspace.destination init_scripts.*.volumes.destination init_scripts.*.abfss.destination init_scripts.*.file.destination string * mengacu pada indeks skrip init dalam larik atribut. Lihat Menulis kebijakan untuk atribut array.
instance_pool_id string Mengontrol pool yang digunakan oleh node pekerja jika driver_instance_pool_id juga ditentukan, atau jika tidak untuk semua node kluster. Jika Anda menggunakan pool untuk node pekerja, Anda juga harus menggunakan pool untuk node driver. Ketika disembunyikan, menghapus pilihan pool dari UI.
driver_instance_pool_id string Jika ditentukan, mengonfigurasi berbagai pool untuk node driver daripada untuk node pekerja. Jika tidak ditentukan, mewarisi instance_pool_id. Jika Anda menggunakan pool untuk node pekerja, Anda juga harus menggunakan pool untuk node driver. Ketika disembunyikan, menghapus pilihan pool driver dari UI.
node_type_id string Ketika disembunyikan, menghapus pilihan jenis node pekerja dari UI.
num_workers angka opsional Ketika disembunyikan, menghapus spesifikasi angka pekerja dari UI.
runtime_engine string Menentukan apakah kluster menggunakan Photon atau tidak. Nilai yang mungkin adalah PHOTON atau STANDARD.
single_user_name string Nama pengguna untuk kredensial memintasi akses pengguna tunggal.
spark_conf.* string opsional Mengontrol nilai konfigurasi tertentu dengan menambahkan nama kunci konfigurasi, misalnya: spark_conf.spark.executor.memory.
spark_env_vars.* string opsional Mengontrol nilai variabel lingkungan Spark tertentu dengan menambahkan variabel lingkungan, misalnya: spark_env_vars.<environment variable name>.
spark_version string Nama versi gambar Spark seperti yang ditentukan melalui API (Databricks Runtime). Anda juga dapat menggunakan nilai kebijakan khusus yang secara dinamis memilih Databricks Runtime. Lihat Nilai kebijakan khusus untuk pemilihan Databricks Runtime.
workload_type.clients.jobs Boolean Menentukan apakah sumber daya komputasi dapat digunakan untuk pekerjaan. Lihat Mencegah komputasi digunakan dengan pekerjaan.
workload_type.clients.notebooks Boolean Menentukan apakah sumber daya komputasi dapat digunakan dengan notebook. Lihat Mencegah komputasi digunakan dengan pekerjaan.

Jalur atribut virtual

Tabel ini mencakup dua atribut sintetis tambahan yang didukung oleh kebijakan:

Jalur atribut Tipe Deskripsi
dbus_per_hour number Atribut terhitung yang mewakili DBA maksimum yang dapat digunakan sumber daya setiap jam termasuk simpul driver. Metrik ini adalah cara langsung untuk mengontrol biaya pada tingkat komputasi individual. Gunakan dengan batasan rentang.
cluster_type string Mewakili jenis kluster yang dapat dibuat:

* all-purpose untuk komputasi serba guna Azure Databricks
* job untuk komputasi pekerjaan yang dibuat oleh penjadwal pekerjaan
* dlt untuk komputasi yang dibuat untuk alur Tabel Langsung Delta

Izinkan atau blokir jenis komputasi yang ditentukan untuk dibuat dari kebijakan. all-purpose Jika nilai tidak diizinkan, kebijakan tidak ditampilkan di UI komputasi buat semua tujuan. job Jika nilai tidak diizinkan, kebijakan tidak ditampilkan di UI komputasi pekerjaan buat.

Nilai kebijakan khusus untuk pemilihan Databricks Runtime

Atribut spark_version ini mendukung nilai khusus yang secara dinamis memetakan ke versi Databricks Runtime berdasarkan kumpulan versi Databricks Runtime yang didukung saat ini.

Nilai berikut dapat digunakan dalam spark_version atribut :

  • auto:latest: Peta ke versi GA Databricks Runtime terbaru.
  • auto:latest-ml: Peta ke versi ML Databricks Runtime terbaru.
  • auto:latest-lts: Peta ke versi Runtime Databricks dukungan jangka panjang (LTS) terbaru.
  • auto:latest-lts-ml: Peta ke versi ML LTS Databricks Runtime terbaru.
  • auto:prev-major: Peta ke versi RUNTIME GA Databricks terbaru kedua. Misalnya, jika auto:latest adalah 14.2, maka auto:prev-major adalah 13.3.
  • auto:prev-major-ml: Peta ke versi ML Runtime GA Databricks terbaru kedua. Misalnya, jika auto:latest adalah 14.2, maka auto:prev-major adalah 13.3.
  • auto:prev-lts: Peta ke versi LTS Databricks Runtime terbaru kedua. Misalnya, jika auto:latest-lts adalah 13.3, maka auto:prev-lts adalah 12.2.
  • auto:prev-lts-ml: Peta ke versi ML LTS Databricks Runtime terbaru kedua. Misalnya, jika auto:latest-lts adalah 13.3, maka auto:prev-lts adalah 12.2.

Catatan

Menggunakan nilai-nilai ini tidak membuat komputasi pembaruan otomatis saat versi runtime baru dirilis. Pengguna harus secara eksplisit mengedit komputasi agar versi Databricks Runtime berubah.

Jenis kebijakan yang didukung

Bagian ini mencakup referensi untuk setiap jenis kebijakan yang tersedia. Ada dua kategori jenis kebijakan: kebijakan tetap dan kebijakan pembatasan.

Kebijakan tetap mencegah konfigurasi pengguna pada atribut. Dua jenis kebijakan tetap adalah:

Membatasi kebijakan membatasi opsi pengguna untuk mengonfigurasi atribut. Membatasi kebijakan juga memungkinkan Anda mengatur nilai default dan membuat atribut opsional. Lihat Bidang kebijakan pembatasan tambahan.

Opsi Anda untuk membatasi kebijakan adalah:

Kebijakan tetap

Kebijakan tetap membatasi atribut ke nilai yang ditentukan. Untuk nilai atribut selain numerik dan boolean, nilai harus diwakili oleh atau dikonversi ke string.

Dengan kebijakan tetap, Anda juga dapat menyembunyikan atribut dari UI dengan mengatur hidden bidang ke true.

interface FixedPolicy {
    type: "fixed";
    value: string | number | boolean;
    hidden?: boolean;
}

Contoh kebijakan ini memperbaiki versi Databricks Runtime dan menyembunyikan bidang dari UI pengguna:

{
  "spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}

Kebijakan terlarang

Kebijakan terlarang mencegah pengguna mengonfigurasi atribut. Kebijakan terlarang hanya kompatibel dengan atribut opsional.

interface ForbiddenPolicy {
    type: "forbidden";
}

Kebijakan ini melarang melampirkan kumpulan ke komputasi untuk simpul pekerja. Pool juga dilarang untuk node driver, karena driver_instance_pool_id mewarisi kebijakan.

{
  "instance_pool_id": { "type": "forbidden" }
}

Kebijakan daftar izin

Kebijakan daftar yang diizinkan menentukan daftar nilai yang dapat dipilih pengguna saat mengonfigurasi atribut.

interface AllowlistPolicy {
  type: "allowlist";
  values: (string | number | boolean)[];
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Contoh daftar izin ini memungkinkan pengguna untuk memilih antara dua versi Databricks Runtime:

{
  "spark_version":  { "type": "allowlist", "values": [ "13.3.x-scala2.12", "12.2.x-scala2.12" ] }
}

Kebijakan daftar blokir

Kebijakan daftar blokir mencantumkan nilai yang tidak diizinkan. Karena nilai harus sama persis, kebijakan ini mungkin tidak berfungsi seperti yang diharapkan ketika atribut bersifat lenient dalam bagaimana nilai diwakili (misalnya, memungkinkan spasi di depan dan di belakang).

interface BlocklistPolicy {
  type: "blocklist";
  values: (string | number | boolean)[];
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Contoh ini memblokir pengguna untuk memilih 7.3.x-scala2.12 sebagai Databricks Runtime.

{
  "spark_version":  { "type": "blocklist", "values": [ "7.3.x-scala2.12" ] }
}

Kebijakan regex

Kebijakan regex membatasi nilai yang tersedia untuk nilai yang cocok dengan regex. Untuk keamanan, pastikan regex Anda berlabuh ke awal dan akhir nilai string.

interface RegexPolicy {
  type: "regex";
  pattern: string;
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Contoh ini membatasi versi Databricks Runtime yang dapat dipilih pengguna dari:

{
  "spark_version":  { "type": "regex", "pattern": "13\\.[3456].*" }
}

Kebijakan rentang

Kebijakan rentang membatasi nilai ke rentang tertentu menggunakan minValue bidang dan maxValue . Nilai harus berupa angka desimal. Batas numerik harus dapat diwakili sebagai nilai poin floating ganda. Untuk menunjukkan kurangnya batas tertentu, Anda dapat menghilangkan salah satu minValue atau maxValue.

interface RangePolicy {
  type: "range";
  minValue?: number;
  maxValue?: number;
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Contoh ini membatasi jumlah maksimum pekerja hingga 10:

{
  "num_workers":  { "type": "range", "maxValue": 10 }
}

Kebijakan tidak terbatas

Kebijakan tidak terbatas digunakan untuk membuat atribut yang diperlukan atau untuk mengatur nilai default di UI.

interface UnlimitedPolicy {
  type: "unlimited";
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Contoh ini menambahkan COST_BUCKET tag ke komputasi:

{
  "custom_tags.COST_BUCKET":  { "type": "unlimited" }
}

Untuk mengatur nilai default untuk variabel konfigurasi Spark, tetapi juga memungkinkan menghilangkan (menghapus) variabel tersebut:

{
  "spark_conf.spark.my.conf":  { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}

Bidang kebijakan pembatasan tambahan

Untuk membatasi jenis kebijakan, Anda dapat menentukan dua bidang tambahan:

  • defaultValue - Nilai yang secara otomatis terisi dalam UI komputasi buat.
  • isOptional - Kebijakan pembatasan pada atribut secara otomatis membuatnya diperlukan. Untuk membuat atribut opsional, atur bidang ke isOptionaltrue.

Catatan

Nilai default tidak secara otomatis diterapkan ke komputasi yang dibuat dengan API Kluster. Untuk menerapkan nilai default menggunakan API, tambahkan parameter apply_policy_default_values ke definisi komputasi dan atur ke true.

Kebijakan contoh ini menentukan nilai default id1 untuk pool bagi node pekerja, tetapi membuatnya bersifat opsional. Saat membuat komputasi, Anda dapat memilih kumpulan yang berbeda atau memilih untuk tidak menggunakannya. Jika driver_instance_pool_id tidak ditentukan dalam kebijakan atau saat membuat komputasi, kumpulan yang sama digunakan untuk simpul pekerja dan simpul driver.

{
  "instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}

Menulis kebijakan untuk atribut array

Anda dapat menentukan kebijakan untuk atribut larik dengan dua cara:

  • Pembatasan generik untuk semua elemen larik. Pembatasan ini menggunakan simbol wildcard * di jalur kebijakan.
  • Pembatasan khusus untuk elemen larik pada indeks tertentu. Pembatasan ini menggunakan nomor di jalur.

Misalnya, untuk atribut larik init_scripts, jalur generik dimulai dengan init_scripts.* dan jalur tertentu dengan init_scripts.<n>, di mana <n> adalah indeks bilangan bulat dalam larik (dimulai dengan 0). Anda dapat menggabungkan pembatasan generik dan khusus, dalam hal ini pembatasan generik berlaku untuk setiap elemen larik yang tidak memiliki pembatasan tertentu. Dalam setiap kasus hanya satu pembatasan kebijakan yang akan berlaku.

Bagian berikut menunjukkan contoh contoh umum yang menggunakan atribut array.

Memerlukan entri khusus inklusi

Anda tidak dapat memerlukan nilai tertentu tanpa menentukan perintah. Contohnya:

{
  "init_scripts.0.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-1>"
  },
  "init_scripts.1.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-2>"
  }
}

Memerlukan nilai tetap dari seluruh daftar

{
  "init_scripts.0.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-1>"
  },
  "init_scripts.*.volumes.destination": {
    "type": "forbidden"
  }
}

Melarang penggunaan sama sekali

{
   "init_scripts.*.volumes.destination": {
    "type": "forbidden"
  }
}

Perbolehkan entri yang mengikuti pembatasan tertentu

{
    "init_scripts.*.volumes.destination": {
    "type": "regex",
    "pattern": ".*<required-content>.*"
  }
}

Memperbaiki sekumpulan skrip init tertentu

Dalam kasus jalur init_scripts, larik dapat berisi salah satu dari beberapa struktur di mana semua kemungkinan varian perlu dihandel tergantung dari kasus penggunaan. Misalnya, untuk memerlukan satu set skrip init tertentu, dan melarang varian apa pun dari versi lain, Anda dapat menggunakan pola berikut:

{
  "init_scripts.0.volumes.destination": {
    "type": "fixed",
    "value": "<volume-paths>"
  },
  "init_scripts.1.volumes.destination": {
    "type": "fixed",
    "value": "<volume-paths>"
  },
  "init_scripts.*.workspace.destination": {
    "type": "forbidden"
  },
  "init_scripts.*.abfss.destination": {
    "type": "forbidden"
  },
  "init_scripts.*.file.destination": {
    "type": "forbidden"
  }
}

Contoh kebijakan

Bagian ini mencakup contoh kebijakan yang dapat Anda gunakan sebagai referensi untuk membuat kebijakan Anda sendiri. Anda juga dapat menggunakan keluarga kebijakan yang disediakan Azure Databricks sebagai templat untuk kasus penggunaan kebijakan umum.

Kebijakan komputasi umum

Kebijakan komputasi tujuan umum dimaksudkan untuk memandu pengguna dan membatasi beberapa fungsionalitas, sambil memerlukan tag, membatasi jumlah maksimum instans, dan memberlakukan batas waktu.

{
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "spark_version": {
    "type": "regex",
    "pattern": "12\\.[0-9]+\\.x-scala.*"
  },
  "node_type_id": {
    "type": "allowlist",
    "values": [
      "Standard_L4s",
      "Standard_L8s",
      "Standard_L16s"
    ],
    "defaultValue": "Standard_L16s_v2"
  },
  "driver_node_type_id": {
    "type": "fixed",
    "value": "Standard_L16s_v2",
    "hidden": true
  },
  "autoscale.min_workers": {
    "type": "fixed",
    "value": 1,
    "hidden": true
  },
  "autoscale.max_workers": {
    "type": "range",
    "maxValue": 25,
    "defaultValue": 5
  },
  "autotermination_minutes": {
    "type": "fixed",
    "value": 30,
    "hidden": true
  },
  "custom_tags.team": {
    "type": "fixed",
    "value": "product"
  }
}

Menentukan batas pada komputasi alur Delta Live Tables

Catatan

Saat menggunakan kebijakan untuk mengonfigurasi komputasi Tabel Langsung Delta, Databricks merekomendasikan penerapan satu kebijakan ke komputasi default dan maintenance .

Untuk mengonfigurasi kebijakan untuk komputasi alur, buat kebijakan dengan bidang yang cluster_type diatur ke dlt. Contoh berikut membuat kebijakan minimal untuk komputasi Tabel Langsung Delta:

{
  "cluster_type": {
    "type": "fixed",
    "value": "dlt"
  },
  "num_workers": {
    "type": "unlimited",
    "defaultValue": 3,
    "isOptional": true
  },
  "node_type_id": {
    "type": "unlimited",
    "isOptional": true
  },
  "spark_version": {
    "type": "unlimited",
    "hidden": true
  }
}

Kebijakan berukuran sedang sederhana

Memungkinkan pengguna membuat komputasi berukuran sedang dengan konfigurasi minimal. Satu-satunya bidang yang diperlukan pada waktu pembuatan adalah nama komputasi; sisanya diperbaiki dan disembunyikan.

{
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "spark_conf.spark.databricks.cluster.profile": {
    "type": "forbidden",
    "hidden": true
  },
  "autoscale.min_workers": {
    "type": "fixed",
    "value": 1,
    "hidden": true
  },
  "autoscale.max_workers": {
    "type": "fixed",
    "value": 10,
    "hidden": true
  },
  "autotermination_minutes": {
    "type": "fixed",
    "value": 60,
    "hidden": true
  },
  "node_type_id": {
    "type": "fixed",
    "value": "Standard_L8s_v2",
    "hidden": true
  },
  "driver_node_type_id": {
    "type": "fixed",
    "value": "Standard_L8s_v2",
    "hidden": true
  },
  "spark_version": {
    "type": "fixed",
    "value": "auto:latest-ml",
    "hidden": true
  },
  "custom_tags.team": {
    "type": "fixed",
    "value": "product"
  }
}

Kebijakan khusus pekerjaan

Memungkinkan pengguna membuat komputasi pekerjaan untuk menjalankan pekerjaan. Pengguna tidak dapat membuat komputasi semua tujuan menggunakan kebijakan ini.

{
  "cluster_type": {
    "type": "fixed",
    "value": "job"
  },
  "dbus_per_hour": {
    "type": "range",
    "maxValue": 100
  },
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "num_workers": {
    "type": "range",
    "minValue": 1
  },
  "node_type_id": {
    "type": "regex",
    "pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
  },
  "driver_node_type_id": {
    "type": "regex",
    "pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
  },
  "spark_version": {
    "type": "unlimited",
    "defaultValue": "auto:latest-lts"
  },
  "custom_tags.team": {
    "type": "fixed",
    "value": "product"
  }
}

Kebijakan metastore eksternal

Memungkinkan pengguna membuat komputasi dengan metastore yang ditentukan admin yang sudah dilampirkan. Ini berguna untuk memungkinkan pengguna membuat komputasi mereka sendiri tanpa memerlukan konfigurasi tambahan.

{
  "spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL": {
      "type": "fixed",
      "value": "jdbc:sqlserver://<jdbc-url>"
  },
  "spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName": {
      "type": "fixed",
      "value": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
  },
  "spark_conf.spark.databricks.delta.preview.enabled": {
      "type": "fixed",
      "value": "true"
  },
  "spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName": {
      "type": "fixed",
      "value": "<metastore-user>"
  },
  "spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword": {
      "type": "fixed",
      "value": "<metastore-password>"
  }
}

Mencegah komputasi digunakan dengan pekerjaan

Kebijakan ini mencegah pengguna menggunakan komputasi untuk menjalankan pekerjaan. Pengguna hanya akan dapat menggunakan komputasi dengan notebook.

{
  "workload_type.clients.notebooks": {
    "type": "fixed",
    "value": true
  },
  "workload_type.clients.jobs": {
    "type": "fixed",
    "value": false
  }
}

Menghapus kebijakan penskalakan otomatis

Kebijakan ini menonaktifkan penskalaan otomatis dan memungkinkan pengguna untuk mengatur jumlah pekerja dalam rentang tertentu.

{
  "num_workers": {
  "type": "range",
  "maxValue": 25,
  "minValue": 1,
  "defaultValue": 5
  }
}

Penerapan tag kustom

Untuk menambahkan aturan tag komputasi ke kebijakan, gunakan custom_tags.<tag-name> atribut .

Misalnya, setiap pengguna yang menggunakan kebijakan ini perlu mengisi COST_CENTER tag dengan 9999, 9921, atau 9531 agar komputasi dapat diluncurkan:

   {"custom_tags.COST_CENTER": {"type":"allowlist", "values":["9999", "9921", "9531" ]}}