大家好,
我在磚絕對新鮮,所以我需要你的幫助。
細節:
任務:合並12 CSV文件在磚的最佳方式。
位置的文件:我將詳細描述它,因為我可以沒有很好的定位。如果我去的數據- >瀏覽DBFS - >我可以找到文件夾12 csv文件。
我已經嚐試:
首先我必須說我已經到了正確的結果,但我認為這是非常糟糕的方法。
火花= SparkSession.builder.getOrCreate ()
df_April = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_April_2019.csv”) df_August = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_August_2019.csv”) df_December = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_December_2019.csv”) df_February = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_February_2019.csv”) df_January = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_January_2019.csv”) df_July = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_July_2019.csv”) df_June = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_June_2019.csv”) df_March = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_March_2019.csv”) df_May = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_May_2019.csv”) df_November = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_November_2019.csv”) df_October = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_October_2019.csv”) df_September = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksandra.frolova@zebra.com/Sales分析/ Sales_September_2019.csv”)
df_AllMonth = df_April.union (df_August) .union (df_December) .union (df_February) .union (df_January) .union (df_July) .union (df_June) .union (df_March) .union (df_May) .union (df_November) .union (df_October) .union (df_September)
結論:
我想找到一個方法,我可以合並數據不保存到變量。是可能的嗎?也許你可以找到更好的方法怎麼做這個任務嗎?
謝謝你!
嗨,謝謝你的回答!是的我所有結構的csv文件都是相同的。
我用listdir()方法獲得所有文件的名字和“cykle”我閱讀路徑和csv文件,並將其保存到新的dataframe。
重要的是:實際上,如果我寫“dbfs: / ....”它不工作(我總是錯誤文件沒有找到),但當我使用“/ dbfs /“idk為什麼工作
無論如何,這是正確的代碼閱讀所有csv文件並連接它。
folder_path = " / dbfs / FileStore / aleksandra.frolova@zebra.com/Sales分析/“iles = os.listdir (folder_path) #返回定義的csv文件的名字列表文件夾df_all_months = pd.DataFrame() #為文件創建新的DataFrame對象文件:df_of_single_file = pd。read_csv (folder_path +文件)#存儲當前dataframe df_all_months = pd。concat ([df_all_months df_of_single_file])
好的一些技巧:
火花可以閱讀整個文件夾。如果你有12 csv文件在一個文件夾,和他們有同樣的模式,你可以試試:spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / / FileStore / aleksandra.frolova@zebra.com/Sales分析)
這樣整個文件夾讀取。
當然,如果你的文件有不同的結構,火花顯然不知道做什麼所以你必須定義一個手動模式。
嗨,謝謝你的回答!是的我所有結構的csv文件都是相同的。
我用listdir()方法獲得所有文件的名字和“cykle”我閱讀路徑和csv文件,並將其保存到新的dataframe。
重要的是:實際上,如果我寫“dbfs: / ....”它不工作(我總是錯誤文件沒有找到),但當我使用“/ dbfs /“idk為什麼工作
無論如何,這是正確的代碼閱讀所有csv文件並連接它。
folder_path = " / dbfs / FileStore / aleksandra.frolova@zebra.com/Sales分析/“iles = os.listdir (folder_path) #返回定義的csv文件的名字列表文件夾df_all_months = pd.DataFrame() #為文件創建新的DataFrame對象文件:df_of_single_file = pd。read_csv (folder_path +文件)#存儲當前dataframe df_all_months = pd。concat ([df_all_months df_of_single_file])