你好,我有一些問題與許多smalls文件的處理和可能的改進和增強。
我們有許多小的xml文件。這些文件是此前由另一個係統處理,使他們在我們datalake,但作為一個額外的步驟包裝最初的json文件中的一些元數據的xml文件。這個json是平的和由jsonl格式。
我們目前使用ADF引發的新文件,然後將它們添加到一個表(dt₁)三角洲湖。這對每個字段表中的一列,其中一個是原始的xml數據。這些xml文件可能非常大,所以這張桌子大約20 m行是150 gb。
此表後一步打開xml字段一個UDF,我們得到一個可用的版本的數據在xml,也如表(DT2)三角洲。問題是,這種最初的表非常緩慢和大三角洲。隻是做一個計數需要5分鍾。目前沒有分區表。我們可以添加,但是除了更快搜索我不確定計數等,幫助其他查詢。我有一個很難找到信息元數據時計算和使用在三角洲湖。
我們已經考慮裝載器但由於DLT是在非常早期階段我們沒有超級喜歡使用這個。額外的問題無法運行的東西交互也似乎是一個無效的結構,但也許我缺少一些東西,這是路要走。任何更好的方法思想是感激。
我們所有的步驟在最初的ADF負載使用pyspark結構化流。運行設置的dt₁DT2大約需要2天與一個相當大的集群,而我們可以處理這些UDF的使用dbutils和python變體與單個節點在一天。似乎有一些基本的經濟放緩,我失蹤pyspark處理。
我很難分析火花UI和理解什麼是發生失敗,正在放緩。這有助於在不知道如何前進。我看著pyspark分析器,但尚未運行它。這可能是有用的雖然看到我期待什麼,那就是UDF是緩慢的,是不會幫助本身。
從dt₁DT2:執行計劃
= = = =物理計劃
*(1)項目(pythonUDF0 # 24304。Col1 Col1 # 24048,……97多個字段)
+ - BatchEvalPython[<λ>(身體# 24021,路徑# 24025)# 24037),(pythonUDF0 # 24304)
+ - InMemoryTableScan(# 24025 # 24021,路徑),假的
+ - InMemoryRelation[身體# 24021,校驗和# 24022,# 24023的格式,id # 24024, # 24025, # 24026大小,時間戳# 24027),StorageLevel(磁盤、內存、反序列化,1副本)
+ - * (1)ColumnarToRow
+ - FileScan鋪(身體# 249,校驗和# 250,# 251的格式,id # 252, # 253, # 254大小,時間戳# 255)分批處理:真的,DataFilters:[],格式:拚花,地點:PreparedDeltaFileIndex(1路)[abfss: / / container@datalake.dfs.core.windows.net/bronz..。PartitionFilters: [], PushedFilters: [], ReadSchema: struct <身體:字符串,校驗和:字符串,格式:字符串,id:字符串,路徑:字符串,大小:int,時間戳:string >
現在看這個,似乎UDF應用的第一步,而不是分割數據,然後應用UDF。這是一種進步嗎?
@Bauke Brenninkmeijer:
聽起來你麵臨一些在你當前的性能和可伸縮性挑戰的過程。這裏有一些想法和建議:
我希望這些建議可以幫助你優化你的處理管道,提高性能和可伸縮性。
@Bauke Brenninkmeijer:
聽起來你麵臨一些在你當前的性能和可伸縮性挑戰的過程。這裏有一些想法和建議:
我希望這些建議可以幫助你優化你的處理管道,提高性能和可伸縮性。