取消
顯示的結果
而不是尋找
你的意思是:

Pyspark:您不能使用dbutils火花內工作

Nandini
新的貢獻者二世

我試圖在磚parallelise拷貝文件的執行。利用多個執行器是一種方法。所以,這是一段代碼,我在pyspark寫道。

def parallel_copy_execution (src_path: str target_path: str): files_in_path = dbutils.fs.ls (src_path) file_paths_df = spark.sparkContext.parallelize (files_in_path) .toDF file_paths_df ()。foreach(λx: dbutils.fs.cp (x.path.toString (), target_path,遞歸= True))

我拿來所有文件複製和創造了Dataframe。當試圖運行一個foreach在DataFrame我得到以下錯誤。它說

“你不能使用內dbutils火花工作”

你不能使用dbutils內引發工作或否則泡菜。如果你需要使用內getArguments火花的工作,你必須在使用前得到的參數。例如,如果您有以下代碼:myRdd。地圖(λ我:dbutils.args.getArgument (X) + str(我)那麼你應該這樣使用它:argX = dbutils.args.getArgument myRdd (X)。地圖(λ我:argX + str(我))

但當我試著在Scala中相同。它的工作原理。內部使用dbutils火花工作。將這段代碼。

def parallel_copy_execution (p:字符串,t: String):單位= {dbutils.fs.ls (p) . map (_.path) .toDF。= > dbutils.fs.cp foreach{文件(文件(0)。toString, t,遞歸= true) println (s“cp文件:$文件”)}}

Pyspark API不是更新來處理呢?

如果是的,請建議替代過程並行dbutils命令。

10個回答10

匿名
不適用

你可以使用增量克隆複製表嗎?

Hubert_Dudek1
尊敬的貢獻者三世

是的,我認為最好的將是完全重建的代碼和使用,例如,複製。

  • dbutils利用一個核心
  • 抽樣,不優化催化劑和AQE
  • 高級代碼拷貝到執行分布式方式和優化

Hubert_Dudek1
尊敬的貢獻者三世

另外,使用Azure數據工廠複製文件。它有巨大的吞吐量。

VaibB
貢獻者

你不能使用dbutils命令pyspark內部API。嚐試使用s3複製或相當於Azure。

Matt101122
貢獻者

@Nandini拉我做了一些類似的通過使用shutil dbutils相反。這工作了許多當地的文件複製到Azure存儲在直線。然而,我現在的問題是找到一個統一的目錄安裝Azure存儲不建議友好的解決方案。(shutil和操作係統不會處理abfss: / /路徑)

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map