背景:我正在寫一個試點項目,評估使用磚訓練模型的利弊使用r .我使用一個數據集,占地約5.7 gb的內存當加載到一個熊貓dataframe。統一的數據存儲在一個三角洲表目錄。
問題:我可以使用python收集()的數據(pyspark)在大約2分鍾。然而,當我試圖使用sparklyr收集相同的數據集在R ~ 2.5天後仍運行的命令。我不能將數據加載到DBFS第一因為我們需要更嚴格的比DBFS將允許數據訪問控製。下麵是截圖的細胞,我跑到收集()的數據在Python和R。
我希望我隻是缺少一些關於如何sparklyr加載數據。
這是細胞使用pyspark裝載數據,可以看到,花了2.04分鍾來完成:
這是細胞使用sparklyr裝載數據,您可以看到,我取消後2.84天:
我也試著用“sparklyr:: spark_read_table”功能,但我有一個錯誤的表或視圖了main.databricks_……”我認為這一定是因為表在metastore由統一目錄管理。
環境信息:
LTS磚運行時:10.4
司機節點大小:140 gb內存和20個核
工作者節點:1工人節點與56個gb的內存和8芯。
R庫安裝:箭頭,sparklyr SparkR dplyr
是的,的名字dataframe有點草率,因為它是一個熊貓dataframe。盡管規模,所有的機器學習文檔和示例毫升筆記本磚,我看到司機節點上數據加載到內存中。如果我記得正確的指導我從磚是為了避免使用spark-compatible訓練算法隻要你司機節點上數據可以放入內存。當5 GB的數據集可能適合我的筆記本我有點擔心,如果我不能5 GB從三角洲表加載到司機節點我幾乎肯定無法加載一個大數據集,不適合在我的筆記本電腦,說50 GB。加上數據集包含受保護的健康信息我不允許下載到我的筆記本電腦。
這是一個很好的建議,我應該已經試過了。盡管當我使用
SparkR::收集
我得到一個JVM的錯誤:
. lang。VM OutOfMemoryError:要求數組大小超過限製