我正在處理一個問題,我需要加載大量的CSV並使用SparkR對它們進行聚合。在SparkR中處理複製的列
- 我需要推斷架構,只要我可以(所以檢測整數等)。
- 我需要假設我無法對模式進行硬編碼(每個文件中未知數的 列或無法單獨從列名稱推斷模式)。
- 我無法從具有重複標題值的CSV文件推斷模式 - 它根本不會讓您。
我加載它們,像這樣:
df1 <- read.df(sqlContext, file, "com.databricks.spark.csv", header = "true", delimiter = ",")
它加載好了,但是當我嘗試運行任何類型的工作(即使是簡單的count()
)失敗:
java.lang.IllegalArgumentException: The header contains a duplicate entry: # etc
我試圖用重命名的標題中出現的模式:
new <- make.unique(c(names(df1)), sep = "_")
names(df1) <- new
schema(df1) # new column names present in schema
但是,當我再次嘗試count(),我得到和以前一樣的重複錯誤,這表明它引用了舊的列名稱。
我覺得有一個非常簡單的方法,如果有事先道歉。有什麼建議麼?
你可能會得到同樣的錯誤重複以前一樣,因爲你之前.Count之間沒有發生作用(),這樣的數據甚至沒有被加載到數據幀在此之前,即使你已經改變的模式。您是否可以選擇從csv中刪除標題行,還是將其註釋掉? (您可以將csv閱讀器設置爲忽略註釋行)。然後在讀入文件時使用inferSchema =「true」。 – xyzzy