Görevler arasında bilgi geçirmek için görev değerlerini kullanma

Görev değerleri , Databricks işi içindeki görevler arasında rastgele değerler geçirmenize olanak tanıyan Databricks Yardımcı Programları taskValues alt yardımcı programlarına başvurur. Bkz . taskValues alt yardımcı programı (dbutils.jobs.taskValues).

Bir görevde kullanarak dbutils.jobs.taskValues.set() bir anahtar-değer çifti belirtirsiniz ve ardından sonraki görevlerdeki değere başvurmak için görev adını ve anahtarı kullanabilirsiniz.

Not

dbutils.jobs.taskValues.set() alt yardımcı programlarındaki dbutils.jobs.taskValues.get() ve dbutils.jobs.taskValues Python işlevleri olduğundan, bunlar yalnızca Python'ın dil olarak seçili olduğu not defterlerinde kullanılabilir. Ancak, parametreleri destekleyen tüm görevler için dinamik değer başvurularını kullanarak görev değerlerine başvurabilirsiniz. Bkz. Referans görev değerleri.

Görev değerlerini ayarlama

kullanarak dbutils.jobs.taskValues.set()Python not defterlerinde görev değerlerini ayarlayın.

Görev değeri anahtarları dize olmalıdır. Not defterinde tanımlanmış birden çok görev değeriniz varsa her anahtar benzersiz olmalıdır.

Görev değerlerini anahtarlara el ile veya program aracılığıyla atayabilirsiniz. Yalnızca geçerli JSON olarak ifade edilebilen değerlere izin verilir. Değerin JSON gösteriminin boyutu 48 KiB'ı aşamaz.

Örneğin, aşağıdaki örnek anahtarı fave_foodiçin statik bir dize ayarlar:

dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")

Aşağıdaki örnek, belirli bir rezervasyon için tüm güncelleme kayıtlarını sorgulamak ve mevcut rezervasyon durumunu ve toplam kayıt sayısını döndürmek için bir not defteri görev parametresi kullanır:

from pyspark.sql.functions import col

dbutils.widgets.text("booking_id", "51567", "Booking ID")
booking_id = dbutils.widgets.get("booking_id")

query = (spark.read.table("samples.wanderbricks.booking_updates")
  .orderBy(col("updated_at"), ascending=False)
  .where(col("booking_id") == booking_id)
  .select(col("status"))
)

dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "booking_status", value = query.take(1)[0][0])

Bu deseni kullanarak değer listelerini iletebilir ve ardından bunları, For each görevleri gibi alt akış mantığını koordine etmek için kullanabilirsiniz. Bkz. Başka bir görevi döngüde çalıştırmak için bir For each görev kullanma.

Aşağıdaki örnek, hedef ID için farklı değerleri bir Python listesine çıkarır ve bunu bir görev değeri olarak ayarlar:

dest_list = list(spark.read.table("samples.wanderbricks.properties").select("destination_id").distinct().toPandas()["destination_id"])

dbutils.jobs.taskValues.set(key = "dest_list", value = dest_list)

Referans görev değerleri

Databricks, görev değerlerine dinamik değer başvuru deseni {{tasks.<task_name>.values.<value_name>}}kullanılarak yapılandırılan görev parametreleri olarak başvurmayı önerir.

Örneğin, adı dest_list olan bir görevde destination_lookup anahtarına sahip görev değerine başvurmak için {{tasks.destination_lookup.values.dest_list}} söz dizimini kullanın.

Bkz. Görev parametrelerini yapılandırma ve Dinamik değer referansları.

dbutils.jobs.taskValues.get komutunu kullanma

dbutils.jobs.taskValues.get() söz dizimi, üst akış görev adının belirtilmesini gerektirir. Görev değerlerini birden çok aşağı akış görevinde kullanabileceğiniz için bu söz dizimi önerilmez; bu da bir görev adı değişirse çok sayıda güncelleştirmenin gerekli olduğu anlamına gelir.

Bu söz dizimini kullanarak isteğe bağlı olarak bir default değeri ve bir debugValue belirtebilirsiniz. Anahtar bulunamazsa varsayılan değer kullanılır. , debugValue not defterini görev olarak zamanlamadan önce not defterlerinde el ile kod geliştirme ve test sırasında kullanılacak statik bir değer ayarlamanıza olanak tanır.

Aşağıdaki örnek, görev adı booking_status içinde ayarlanan booking_lookup anahtarının değerini alır. Değer confirmed yalnızca not defterini etkileşimli olarak çalıştırırken döndürülür.

booking_status = dbutils.jobs.taskValues.get(taskKey = "booking_lookup", key = "booking_status", debugValue = "confirmed")

Not

Databricks, eksik anahtarlar veya yanlış adlandırılmış görevler nedeniyle beklenen hata iletilerinin sorunlarını gidermek ve önlemek zor olabileceği için varsayılan değerlerin ayarlanmasını önermez.

Bir For each görevin yinelemelerinden değerleri okuyun

For each task içinde çalışan bir görev, her yinelemede bir kez çalışır ve herhangi bir görevde olduğu gibi her yineleme dbutils.jobs.taskValues.set() ile bir görev değeri ayarlayabilir. Bir sonraki görev, her yinelemenin değerini, tek bir geri dönen listeden okuyabilir; bu liste, yineleme indeksine göre sıralanmıştır.

Important

Bir For each görevin birleştirilmiş yineleme çıktılarını okumak Beta aşamasındadır. Varsayılan olarak etkindir ve klasik işlemde Databricks Runtime 15.4 LTS veya üzerini gerektirir.

dbutils.jobs.taskValues.get, sunucusuz hesaplamada ortam sürümü 5 veya üzerini gerektirir. 1 ile 4 arasındaki ortam sürümlerinde, liste yerine yalnızca ilk yinelemenin değerini döndürür ve bir TypeError yükseltebilir. Dinamik değer referansları herhangi bir işlem düğümünde tam listeyi geri getirir.

Her iki okuma yüzeyinde de, For each görevinin kendisinin değil, For each görevinin içinde çalışan iç içe görevin anahtarını kullanın. Anahtarı, her yinelemeden gelen değerleri tek bir liste olarak yineleme indeksine göre sıralanmış olarak döndürür. Örneğin, result adlı iç içe geçmiş bir görevin üç yinelemesinin her biri process ayarlarsa:

results = dbutils.jobs.taskValues.get(taskKey = "process", key = "result")
# results == [1, 2, 3]

Dinamik değer referansı {{tasks.process.values.result}} aynı diziye çözüm verir.

Anahtarı belirlemeyen bir iterasyon sonuçta konumunu korur: dbutils.jobs.taskValues.get'den None olarak (JSON null) görünür ve dinamik değer başvurusunda null olarak görünür. Örneğin, üç yinelemeden ikincisi result ayarlamadıysa, results, [1, None, 3] olur.

Toplu referansların iki sınırı vardır: bir montaj edilmiş dizi tek bir parametre değeri için yaklaşık 48 KB (49.344 karakter) üzerinde olamaz, tek bir parametre değeri ise en fazla üç toplu görev değeri referansı içerebilir.

Görev değerlerini görüntüleme

Her çalıştırma için bir görev değerinin döndürülen değeri, Görev çalıştırması ayrıntılarınınÇıkış bölmesinde görüntülenir. Bkz. Görev çalıştırma geçmişini görüntüleme.