2017-05-30 49 views
0

我想加載一個數據集與百萬行和1000列與sparklyr。 我在工作時在一個非常大的羣集上運行Spark。數據的大小似乎仍然過大。我曾嘗試兩種不同的方法:sparklyr爲大csv文件

這是數據集:(train_numeric.csv) https://www.kaggle.com/c/bosch-production-line-performance/data

1) - 將進入的.csv HDFS - spark_read_csv(spark_context,路徑)

2) - 讀取csv文件作爲常規[R數據框 - spark_frame < -copy_to(SC,R非數據幀)

兩種方式都完全正常工作的數據集的一個子集,但是當我嘗試讀取整個數據集失敗。

是否有人知道適用於大型數據集的方法?

感謝, 菲利克斯

+0

我明白了什麼樣的錯誤你得到 – kevinykuo

回答

1

的問題是 - 你需要讀取整個數據集到內存?首先 - 注意星火evaluates transformations lazily。 將spark_read_csv內存參數設置爲FALSE會使Spark映射該文件,但不會將其複製到內存中。只有在調用collect()時,整個計算纔會發生。

spark_read_csv(sc, "flights_spark_2008", "2008.csv.bz2", memory = FALSE) 

所以考慮做任何計算並獲得結果反饋給R作爲在下面的例子中之前削減的行和列:

http://spark.rstudio.com/examples-caching.html#process_on_the_fly

+0

那,但實際上我需要在整個數據幀中讀取 – Felix

+0

但是爲什麼?你將如何處理這些數據?我仍然建議將內存設置爲FALSE並管理你想要執行的操作。 – mrjoseph

+0

小問題:將'memory'設置爲'TRUE'意味着你的數據被緩存_in spark_,如果你想用'Spark Dataframe'來執行多個操作,這就是要走的路。 –