我目前正在嘗試將 Spark Dataframe 保存到 Azure Data Lake Storage (ADLS) Gen1。這樣做時,我收到以下限制錯誤:
org.apache.spark.SparkException: Job aborted. Caused by: com.microsoft.azure.datalake.store.ADLException: Error creating file /user/DEGI/CLCPM_DATA/fraud_project/policy_risk_motorcar_with_lookups/part-00000-34d88646-3755-488d-af00-ef2e201240c8-c000.snappy.parquet
Operation CREATE failed with HTTP401 : null
Last encountered exception thrown after 2 tries. [HTTP401(null),HTTP401(null)]
我在檔案中讀到節流是由于 CREATE 限制而發生的,這會導致作業中止。該檔案還給出了可能發生這種情況的三個原因。
- 您的應用程式會創建大量小檔案。
- 外部應用程式會創建大量檔案。
- 訂閱的當前限制太低。
雖然我不認為我的訂閱太低,但我認為可能是我的應用程式創建了太多的鑲木地板檔案。有誰知道在另存為表格時如何判斷將創建多少個檔案?如何找出允許創建的最大檔案數?
我用來創建表的代碼如下所示:
df.write.format("delta").mode("overwrite").saveAsTable("database_name.df", path ='adl://my path to storage')
此外,我能夠毫無問題地撰寫一個較小的測驗資料框。另外,adls 中檔案夾的權限設定正確。
uj5u.com熱心網友回復:
您遇到的錯誤看起來不像是檔案數量的問題。401 是未經授權的問題。盡管如此:
Spark 至少寫入與磁區一樣多的檔案。所以你想要做的是重新磁區你的資料框。有幾個重新磁區api,為了減少磁區和資料分布,建議使用coalesce()
df.coalesce(10).write....
你也可以閱讀
- Spark parquet 磁區:大量檔案
- Spark dataframe寫方法寫很多小檔案
- Spark - 重新磁區()與合并()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/319019.html
標籤:Python 天蓝色 阿帕奇火花 蔚蓝数据湖 三角洲湖
