Przekazywanie informacji między zadaniami przy użyciu wartości zadań
wartości zadania odnoszą się do narzędzia Databricks, a konkretnie podprogramu taskValues
, co umożliwia przekazywanie dowolnych wartości między zadaniami w zadaniu Databricks. Zobacz podutility taskValues (dbutils.jobs.taskValues).
Należy określić parę klucz-wartość przy użyciu dbutils.jobs.taskValues.set()
w jednym zadaniu, a następnie użyć nazwy i klucza zadania, aby odwołać się do wartości w kolejnych zadaniach.
Uwaga
Ponieważ dbutils.jobs.taskValues.set()
i dbutils.jobs.taskValues.get()
w podprogramie dbutils.jobs.taskValues
są funkcjami Pythona, można je używać tylko w notesach, gdzie Python jest ustawiony jako język. Można jednak odwoływać się do wartości zadań przy użyciu odwołań do wartości dynamicznych dla wszystkich zadań obsługujących parametry. Zobacz wartości zadań referencyjnych .
Ustawianie wartości zadań
Ustaw wartości zadań w notesach języka Python przy użyciu narzędzia podrzędnego dbutils.jobs.taskValues.set()
.
Klucze wartości zadania muszą być ciągami. Każdy klucz musi być unikatowy, jeśli w notesie zdefiniowano wiele wartości zadań.
Wartości zadań można przypisywać ręcznie lub programowo do kluczy. Dozwolone są tylko wartości, które mogą być wyrażone jako prawidłowy kod JSON. Rozmiar reprezentacji JSON wartości nie może przekraczać 48 KiB.
Na przykład poniższy przykład ustawia ciąg statyczny dla klucza fave_food
:
dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")
W poniższym przykładzie użyto parametru zadania notesu, aby wykonać zapytanie o wszystkie rekordy dla określonego numeru zamówienia i zwrócić bieżący stan zamówienia i łączną liczbę rekordów:
from pyspark.sql.functions import col
order_num = dbutils.widgets.get("order_num")
query = (spark.read.table("orders")
.orderBy(col("updated"), ascending=False)
.select(col("order_status"))
.where(col("order_num") == order_num)
)
dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "order_status", value = query.take(1)[0][0])
Listy wartości można przekazać przy użyciu tego wzorca, a następnie użyć ich do koordynowania logiki podrzędnej, takiej jak dla każdego zadania. Zobacz Uruchamianie sparametryzowanego zadania zadania usługi Azure Databricks w pętli.
W poniższym przykładzie wyodrębniamy unikatowe wartości identyfikatora produktu na listę w Pythonie i ustawiamy ją jako wartość zadania.
prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])
dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)
Wartości zadań referencyjnych
Databricks zaleca odwoływanie się do wartości zadań jako parametrów zadania skonfigurowanych za pomocą wzorca odniesienia wartości dynamicznej {{tasks.<task_name>.values.<value_name>}}
.
Aby na przykład odwołać się do wartości zadania z kluczem prod_list
z zadania o nazwie product_inventory
, użyj składni {{tasks.product_inventory.values.prod_list}}
.
Zobacz Konfigurowanie parametrów zadań i Co to jest odwołanie do wartości dynamicznej?
Korzystanie z polecenia dbutils.jobs.taskValues.get
dbutils.jobs.taskValues.get()
Składnia wymaga określenia nadrzędnej nazwy zadania. Ta składnia nie jest zalecana, ponieważ można użyć wartości zadań w wielu podrzędnych zadaniach, co oznacza, że w przypadku zmiany nazwy zadania konieczne są liczne aktualizacje.
Korzystając z tej składni, możesz opcjonalnie określić default
wartość i .debugValue
Wartość domyślna jest używana, jeśli nie można odnaleźć klucza.
debugValue
umożliwia ustawienie wartości statycznej do użycia podczas ręcznego tworzenia kodu i testowania w notatnikach przed zaplanowaniem notatnika jako zadania.
Poniższy przykład pobiera wartość klucza order_status
ustawioną w nazwie zadania order_lookup
. Wartość Delivered
jest zwracana tylko w przypadku interaktywnego uruchamiania notesu.
order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")
Uwaga
Usługa Databricks nie zaleca ustawiania wartości domyślnych, ponieważ mogą być trudne do rozwiązywania problemów i zapobiegania oczekiwanym komunikatom o błędach z powodu brakujących kluczy lub niepoprawnie nazwanych zadań.
Wyświetlanie wartości zadań
Zwrócona wartość zadania dla każdego przebiegu jest wyświetlana w panelu Dane wyjściowe szczegółów przebiegu zadania. Zobacz Wyświetlanie historii uruchamiania zadań.