我在Azure存儲excel文件數據湖(創1)。他們遵循文件名遵循相同的模式“2021 - 06 - 18 t09_00_07onr_usage_dataset”,“2021 - 06 - 18 t09_00_07dss_usage_dataset”等根據日期和時間。我想讀所有的文件在文件夾位於Azure數據湖磚不用名字的具體文件,以便在未來新文件讀取和附加到一個大的數據集。這些文件都是一樣的模式,列在同一個訂單,等。到目前為止,我已經嚐試for循環與正則表達式:
路徑= dbutils.fs.ls (/ mnt / adls / 40 _project /哥倫比亞大學/在製品/汞/ UUR_PS_raw_temp /”) fi的路徑:“fi的路徑:打印(fi)閱讀= spark.read.format (“com.crealytics.spark.excel”)。選項(“頭”,“真正的”)。選項(“inferSchema”,“真正的”)。選項(“dataAddress”,“使用數據集”! A2) .load (fi.path)顯示(讀)打印(read.count ())
打印所有的輸出路徑和重要的每個數據集被閱讀,但它隻顯示最後一個。我理解因為我不存儲或附加在for循環,但是當我添加附加它打破。
appended_data = [] = dbutils.fs.ls路徑(/ mnt / adls / 40 _project /哥倫比亞大學/在製品/汞/ UUR_PS_raw_temp /”) fi的路徑:“fi的路徑:打印(fi)閱讀= spark.read.format (“com.crealytics.spark.excel”)。選項(“頭”,“真正的”)。選項(“inferSchema”,“真正的”)。選項(“dataAddress”,“使用數據集”! A2) .load (fi.path)顯示(讀)打印(read.count ()) appended_data.append(閱讀)
但我得到這個錯誤,FileInfo(路徑= ' dbfs: / mnt / adls / 40 _project /哥倫比亞大學/在製品/汞/ UUR_PS_raw_temp / Initialization_DSS。xlsx Initialization_DSS, name =。xlsx”,大小= 39781)TypeError:不支持類型:<類“py4j.java_gateway.JavaObject”>
我試著最後的方式:
李的f = [] glob.glob (“/ mnt / adls / 40 _project /哥倫比亞大學/在製品/汞/ UUR_PS_raw_temp / * _Usage_Dataset.xlsx”): df = pd.read_xlsx (f) li.append = pd (df)框架。concat (li軸= 0,ignore_index = True)
這表示,沒有對象連接。我一直在研究,嚐試一切。請幫助。
如果你正試圖讀一個目錄中的所有文件你應該能夠使用一個通配符和過濾器使用擴展。例如:
df =(火花.read .format .option (“com.crealytics.spark.excel”)(“頭”,“真正的”).option .option (“inferSchema”、“True”) (“dataAddress”,“使用數據集”! A2) .load (/ mnt / adls / 40 _project /哥倫比亞大學/在製品/汞/ UUR_PS_raw_temp / * _Usage_Dataset.xlsx '))
應閱讀所有.xlsx該目錄中的文件。
如果你想閱讀文件就可以遍曆的一個子集,得到一個python中的所有文件路徑列表,然後提供當閱讀列表。例如:
文件= dbutils.fs.ls (/ mnt / adls / 40 _project /哥倫比亞大學/在製品/汞/ UUR_PS_raw_temp /”) files_list = [] f文件:#使用if語句來確定如果你想添加的路徑列表files_list.append (f.path) df =(火花.read .format .option (“com.crealytics.spark.excel”)(“頭”,“真正的”).option .option (“inferSchema”、“True”) (“dataAddress”,“使用數據集”! A2) .load (files_list))