通常我加載csv文件,然後運行不同類型的聚合,例如Spark的「group by」。我想知道是否可以在文件加載過程中啓動這種操作(通常是幾百萬行),而不是對它們進行序列化,以及它是否值得(節省時間)。Spark:加載過程中的分組
例子:
val csv = sc.textFile("file.csv")
val data = csv.map(line => line.split(",").map(elem => elem.trim))
val header = data.take(1)
val rows = data.filter(line => header(0) != "id")
val trows = rows.map(row => (row(0), row))
trows.groupBy(//row(0) etc.)
對於我的星火如何工作的理解,groupBy
(或aggregate
)將被「推遲」到整個CSV文件的內存加載。如果這是正確的,裝載和分組能否在「相同」時間運行,而不是按照兩個步驟排序?
好的,謝謝。如果是這樣的話,我身邊的任何進一步優化都是無用的。 Spark的高級函數通常都是懶惰的或者有例外? – Randomize
這些東西大部分不是Spark特定的。它只是用來實現內部邏輯的數據結構的一個屬性。但總的來說,我會說Spark在實踐中很有意義。 – zero323