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

分區修剪/分區消除不適用於文件夾分區JSON文件?(火花3.1.2)

MartinB
貢獻者三世

想象以下設置:

我有日誌文件存儲為JSON文件分區年、月、日和小時身體上的文件夾:

”“”/ logs |——年= 2020 | = 2021年”——年= 2022 |——月= 01 '——月= 02 | = 01 |——天=…”——天= 13小時= 0000 | |,小時=…”——小時= 0900 | log000001。json |——<許多文件>“log000133。json”“”“

火花支持分區發現這樣的文件夾結構(“所有內置文件來源(包括文本/ CSV / JSON /獸人/拚花)能夠發現和推斷分區信息自動”https://spark.apache.org/docs/latest/sql-data-sources-parquet.html partition-discovery)

然而,鑲花的文件相比,我發現火花不使用該元數據信息分區修剪/分區消除當讀取JSON文件

在我用例我隻是感興趣從一個特定的時間窗口(見日誌過濾器:disappointed_face:

(火花.read .format (json) .load (/ logs) .filter(= = 2022年和月02和天= 13小時= 0900))

我認為激發能應用分區列的過濾器“早期”,隻有掃描文件夾匹配過濾器(例如火花不需要掃描文件夾和讀取文件在/日誌/年= 2020)。

然而,在實踐中我的查詢的執行需要大量的時間。看起來我好像火花首先掃描整個文件係統開始的/日誌讀取所有文件,然後應用過濾器(已經)讀取數據。由於嵌套文件夾結構和大量的文件夾/文件這是非常昂貴的。

顯然火花不壓低過濾器(適用於分區修剪/分區消除)。

對我來說,這是奇怪的行為不同於拚花處理JSON文件。

這是像設計的那樣或者一個錯誤嗎?

現在,我最終實現分區修剪自己在預處理步驟中使用dbutils.fs.ls掃描迭代“正確”的文件夾和組裝一個顯式的文件列表,然後我通過火花讀取命令。

26日回複26

嗨@Kaniz開羅,

是的,這是我做的,我每次都得到同樣的錯誤登錄後:

圖像

嗨@Martin b,謝謝你分享這個。這將是照顧:smiling_face_with_smiling_eyes:。我盡快給你回電。

嗨@Kaniz開羅,

任何更新嗎?

嗨@Martin b,你再試一次嗎?

請分享你的反饋在這裏

嗨@Kaniz開羅,

是的,我做到了。這一次不再顯示錯誤。

但隨著你的鏈接//www.eheci.com/feedback我最終在著陸頁社區工作空間;我的預期反饋信息門戶

我的工作區,在“幫助”還有另一個“反饋”按鈕:

圖像但這隻是mailto鏈接地址feedback@www.eheci.com

這是為了使特性請求嗎?

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

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

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

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

Baidu
map