2016-09-26 54 views
0

我有一個從csv加載的數據框,大約5.4 GB,包含210列 和大約200000行。加速spark數據框任務?

我跑了數據幀此功能:

cnts = (df.select([countDistinct(c).alias(c) for c in df.columns]).first().asDict()) 

我的系統有32GB的內存,這個任務是太慢,顯示周圍13.5小時任務時間,這正常嗎? 或者,我做錯了什麼,我們可以加快一點? 這是一個獨立安裝的用於POC的windows服務器上的spark。 enter image description here

ca

+0

您是否在請求之前使用df.persist()?你的機器上有多少核心? 8?您可以嘗試增加分區數量並激活壓縮。 – GwydionFR

+0

是的,我做了,它顯示了8個核心。如何激活壓縮? –

+0

請參閱spark.rdd.compress \t參數。哦,你使用分佈式文件系統還是標準文件系統(例如ext4,ntfs ...) – GwydionFR

回答

0

嘗試堅持的RDD和使用MEMORY_AND_DISK存儲級別,如果你沒有足夠的內存,它會嘗試把它寫回磁盤,這將有性能優勢,相比於重新計算RDD。

如果你堅持它到磁盤使用KYRO序列化,默認它的二進制格式是緩慢的。