Membuat kluster, notebook, dan pekerjaan dengan Terraform
Artikel ini memperlihatkan cara menggunakan penyedia Databricks Terraform untuk membuat kluster, buku catatan, dan pekerjaan di ruang kerja Azure Databricks yang sudah ada.
Artikel ini adalah pendamping artikel memulai Azure Databricks berikut ini:
Memulai: Memuat data ke dalam tabel streaming, yang menunjukkan menggunakan kluster dengan Katalog Unity, buku catatan Python, dan pekerjaan untuk menjalankan notebook..
Mulai cepat: Jalankan pekerjaan Spark di Ruang Kerja Azure Databricks menggunakan portal Azure, yang menggunakan kluster tujuan umum dan buku catatan Python.
Anda juga dapat menyesuaikan konfigurasi Terraform dalam artikel ini untuk membuat kluster, buku catatan, dan pekerjaan kustom di ruang kerja Anda.
Langkah 1: Membuat dan mengonfigurasi proyek Terraform
Buat proyek Terraform dengan mengikuti instruksi di bagian Persyaratan dari artikel gambaran umum penyedia Databricks Terraform.
Untuk membuat kluster, buat file bernama
cluster.tf
, dan tambahkan konten berikut ke file. Konten ini membuat kluster dengan jumlah sumber daya terkecil yang diizinkan. Kluster ini menggunakan versi Databricks Runtime Long Term Support (LTS) terakhir.Untuk kluster yang berfungsi dengan Unity Catalog:
variable "cluster_name" {} variable "cluster_autotermination_minutes" {} variable "cluster_num_workers" {} variable "cluster_data_security_mode" {} # Create the cluster with the "smallest" amount # of resources allowed. data "databricks_node_type" "smallest" { local_disk = true } # Use the latest Databricks Runtime # Long Term Support (LTS) version. data "databricks_spark_version" "latest_lts" { long_term_support = true } resource "databricks_cluster" "this" { cluster_name = var.cluster_name node_type_id = data.databricks_node_type.smallest.id spark_version = data.databricks_spark_version.latest_lts.id autotermination_minutes = var.cluster_autotermination_minutes num_workers = var.cluster_num_workers data_security_mode = var.cluster_data_security_mode } output "cluster_url" { value = databricks_cluster.this.url }
Untuk kluster semua tujuan:
variable "cluster_name" { description = "A name for the cluster." type = string default = "My Cluster" } variable "cluster_autotermination_minutes" { description = "How many minutes before automatically terminating due to inactivity." type = number default = 60 } variable "cluster_num_workers" { description = "The number of workers." type = number default = 1 } # Create the cluster with the "smallest" amount # of resources allowed. data "databricks_node_type" "smallest" { local_disk = true } # Use the latest Databricks Runtime # Long Term Support (LTS) version. data "databricks_spark_version" "latest_lts" { long_term_support = true } resource "databricks_cluster" "this" { cluster_name = var.cluster_name node_type_id = data.databricks_node_type.smallest.id spark_version = data.databricks_spark_version.latest_lts.id autotermination_minutes = var.cluster_autotermination_minutes num_workers = var.cluster_num_workers } output "cluster_url" { value = databricks_cluster.this.url }
Untuk membuat kluster, buat file lain bernama
cluster.auto.tfvars
, dan tambahkan konten berikut ke file. File ini berisi nilai variabel untuk menyesuaikan kluster. Ganti nilai tempat penampung dengan nilai Anda sendiri.Untuk kluster yang berfungsi dengan Unity Catalog:
cluster_name = "My Cluster" cluster_autotermination_minutes = 60 cluster_num_workers = 1 cluster_data_security_mode = "SINGLE_USER"
Untuk kluster semua tujuan:
cluster_name = "My Cluster" cluster_autotermination_minutes = 60 cluster_num_workers = 1
Untuk membuat buku catatan, buat file lain bernama
notebook.tf
, dan tambahkan konten berikut ke file:variable "notebook_subdirectory" { description = "A name for the subdirectory to store the notebook." type = string default = "Terraform" } variable "notebook_filename" { description = "The notebook's filename." type = string } variable "notebook_language" { description = "The language of the notebook." type = string } resource "databricks_notebook" "this" { path = "${data.databricks_current_user.me.home}/${var.notebook_subdirectory}/${var.notebook_filename}" language = var.notebook_language source = "./${var.notebook_filename}" } output "notebook_url" { value = databricks_notebook.this.url }
Jika Anda membuat kluster, simpan kode buku catatan berikut ke file di direktori yang sama dengan
notebook.tf
file:Di bawah ini adalah file
notebook-getting-started-etl-quick-start.py
buku catatan Python untuk panduan mulai cepat ETL:# Databricks notebook source # Import functions from pyspark.sql.functions import col, current_timestamp # Define variables used in code below file_path = "/databricks-datasets/structured-streaming/events" username = spark.sql("SELECT regexp_replace(current_user(), '[^a-zA-Z0-9]', '_')").first()[0] table_name = f"{username}_etl_quickstart" checkpoint_path = f"/tmp/{username}/_checkpoint/etl_quickstart" # Clear out data from previous demo execution spark.sql(f"DROP TABLE IF EXISTS {table_name}") dbutils.fs.rm(checkpoint_path, True) # Configure Auto Loader to ingest JSON data to a Delta table (spark.readStream .format("cloudFiles") .option("cloudFiles.format", "json") .option("cloudFiles.schemaLocation", checkpoint_path) .load(file_path) .select("*", col("_metadata.file_path").alias("source_file"), current_timestamp().alias("processing_time")) .writeStream .option("checkpointLocation", checkpoint_path) .trigger(availableNow=True) .toTable(table_name)) # COMMAND ---------- df = spark.read.table(table_name) # COMMAND ---------- display(df)
Untuk buku catatan Python untuk Mulai Cepat: Jalankan pekerjaan Spark di Ruang Kerja Azure Databricks menggunakan portal Azure, file bernama
notebook-quickstart-create-databricks-workspace-portal.py
dengan konten berikut:# Databricks notebook source blob_account_name = "azureopendatastorage" blob_container_name = "citydatacontainer" blob_relative_path = "Safety/Release/city=Seattle" blob_sas_token = r"" # COMMAND ---------- wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name,blob_relative_path) spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token) print('Remote blob path: ' + wasbs_path) # COMMAND ---------- df = spark.read.parquet(wasbs_path) print('Register the DataFrame as a SQL temporary view: source') df.createOrReplaceTempView('source') # COMMAND ---------- print('Displaying top 10 rows: ') display(spark.sql('SELECT * FROM source LIMIT 10'))
Jika Anda membuat buku catatan, buat file lain bernama
notebook.auto.tfvars
, dan tambahkan konten berikut ke file. File ini berisi nilai variabel untuk menyesuaikan konfigurasi buku catatan.Untuk notebook Python untuk Memulai: Muat data ke dalam tabel streaming:
notebook_subdirectory = "Terraform" notebook_filename = "notebook-getting-started-etl-quick-start.py" notebook_language = "PYTHON"
Untuk buku catatan Python untuk Mulai Cepat: Jalankan pekerjaan Spark di Ruang Kerja Azure Databricks menggunakan portal Azure:
notebook_subdirectory = "Terraform" notebook_filename = "notebook-quickstart-create-databricks-workspace-portal.py" notebook_language = "PYTHON"
Jika Anda membuat buku catatan, di ruang kerja Azure Databricks Anda, pastikan untuk menyiapkan persyaratan apa pun agar buku catatan berhasil dijalankan, dengan merujuk pada instruksi berikut untuk:
- Buku catatan Python untuk Memulai: Memuat data ke dalam tabel streaming
- Buku catatan Python untuk Mulai Cepat: Menjalankan pekerjaan Spark di Ruang Kerja Azure Databricks menggunakan portal Azure
Untuk membuat pekerjaan, buat file lain bernama
job.tf
, dan tambahkan konten berikut ke file. Konten ini membuat pekerjaan untuk menjalankan buku catatan.variable "job_name" { description = "A name for the job." type = string default = "My Job" } variable "task_key" { description = "A name for the task." type = string default = "my_task" } resource "databricks_job" "this" { name = var.job_name task { task_key = var.task_key existing_cluster_id = databricks_cluster.this.cluster_id notebook_task { notebook_path = databricks_notebook.this.path } } email_notifications { on_success = [ data.databricks_current_user.me.user_name ] on_failure = [ data.databricks_current_user.me.user_name ] } } output "job_url" { value = databricks_job.this.url }
Jika Anda membuat pekerjaan, buat file lain bernama
job.auto.tfvars
, dan tambahkan konten berikut ke file . File ini berisi nilai variabel untuk menyesuaikan konfigurasi pekerjaan.job_name = "My Job" task_key = "my_task"
Langkah 2: Jalankan konfigurasi
Dalam langkah ini, Anda menjalankan konfigurasi Terraform untuk menyebarkan kluster, buku catatan, dan pekerjaan ke ruang kerja Azure Databricks Anda.
Periksa untuk melihat apakah konfigurasi Terraform Anda valid dengan menjalankan
terraform validate
perintah. Jika ada kesalahan yang dilaporkan, perbaiki, dan jalankan perintah lagi.terraform validate
Periksa untuk melihat apa yang akan dilakukan Terraform di ruang kerja Anda, sebelum Terraform benar-benar melakukannya, dengan menjalankan
terraform plan
perintah.terraform plan
Sebarkan kluster, buku catatan, dan pekerjaan ke ruang kerja Anda dengan menjalankan
terraform apply
perintah . Saat diminta untuk menyebarkan, ketikyes
dan tekan Enter.terraform apply
Terraform menyebarkan sumber daya yang ditentukan dalam proyek Anda. Menyebarkan sumber daya ini (terutama kluster) dapat memakan waktu beberapa menit.
Langkah 3: Jelajahi hasilnya
Jika Anda membuat kluster, dalam output
terraform apply
perintah, salin tautan di sampingcluster_url
, dan tempelkan ke bilah alamat browser web Anda.Jika Anda membuat buku catatan, dalam output
terraform apply
perintah, salin tautan di sampingnotebook_url
, dan tempelkan ke bilah alamat browser web Anda.Catatan
Sebelum Anda menggunakan buku catatan, Anda mungkin perlu mengkustomisasi kontennya. Lihat dokumentasi terkait tentang cara mengkustomisasi buku catatan.
Jika Anda membuat pekerjaan, dalam output
terraform apply
perintah, salin tautan di sampingjob_url
, dan tempelkan ke bilah alamat browser web Anda.Catatan
Sebelum menjalankan buku catatan, Anda mungkin perlu mengkustomisasi kontennya. Lihat tautan di awal artikel ini untuk dokumentasi terkait tentang cara mengkustomisasi buku catatan.
Jika Anda membuat pekerjaan, jalankan pekerjaan sebagai berikut:
- Klik Jalankan sekarang di halaman pekerjaan.
- Setelah pekerjaan selesai berjalan, untuk melihat hasil eksekusi pekerjaan, dalam daftar Selesai berjalan (60 hari terakhir) di halaman pekerjaan, klik entri waktu terbaru di kolom Waktu mulai. Panel Output memperlihatkan hasil menjalankan kode buku catatan.
Langkah 4: Bersihkan
Dalam langkah ini, Anda menghapus sumber daya sebelumnya dari ruang kerja Anda.
Periksa untuk melihat apa yang akan dilakukan Terraform di ruang kerja Anda, sebelum Terraform benar-benar melakukannya, dengan menjalankan
terraform plan
perintah.terraform plan
Hapus kluster, buku catatan, dan pekerjaan dari ruang kerja Anda dengan menjalankan
terraform destroy
perintah . Saat diminta untuk menghapus, ketikyes
dan tekan Enter.terraform destroy
Terraform menghapus sumber daya yang ditentukan dalam proyek Anda.
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