[英]Azure Databricks: Python parallel for loop
我正在使用 Azure Databricks 來分析一些數據。 我在 blob 存儲中有以下文件夾結構:
folder_1\n1 csv files
folder_2\n2 csv files
..
folder_k\nk csv files
我想讀取這些文件,運行一些算法(相對簡單)並在另一個 blob 存儲位置的類似文件夾結構中為每個 csv 文件寫出一些日志文件和圖像文件。 現在我有一個簡單的循環結構來做到這一點:
for folder in folders:
#set up some stuff
for file in files:
#do the work and write out results
該數據庫包含 150k 個文件。 有沒有辦法並行化這個?
我發現在databricks中並行化這種令人尷尬的並行任務的最佳方法是使用pandas UDF( https://databricks.com/blog/2020/05/20/new-pandas-udfs-and-python-type- the-upcoming-release-of-apache-spark-3-0.html?_ga=2.143957493.1972283838.1643225636-354359200.1607978015 )
我創建了一個 spark dataframe,其中包含要循環的文件和文件夾列表,將其傳遞給具有指定分區數量的 pandas UDF(基本上是要並行化的核心)。 這可以利用數據塊集群上的可用內核。 從 pandas UDF 調用的內容有一些限制(例如,不能直接使用“dbutils”調用),但它對我的應用程序來說就像一個魅力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.