1
我需要獲取轉換爲RDD的數據幀的兩列的值。什麼是最有效的方式獲取火花的RDD元素
我已經想好了第一個解決方案是,
- 首先轉換RDD到列表行
RDD.collect()
- 然後列表中的每個元素,通過使用
Row[i].getInt(column_index)
這個解決方案中獲得價值適用於中小型數據。但在大一,我得到了over memory
。
我的臨時解決方案是我只創建newRDD,其中只包含兩列而不是所有列。然後,在上面應用我的解決方案,這可能會減少大部分所需的內存。
當前實現是這樣的:
Row[] rows = sparkDataFrame.collect();
for (int i = 0; i < rows.length; i++) { //about 50 million rows
int yTrue = rows[i].getInt(0);
int yPredict = rows[i].getInt(1);
}
你能幫我提高我的解決方案,或者給我建議其他的解決方案!
謝謝!
ps:我是新火花的用戶!
ü意味着,創造新的df是更有效的不是創建新RDD? –
如何使用「foreach」 - 我的朋友推薦! –
它取決於您的使用情況,如果您想要進行更多轉換(如某些聚合),或者您希望在單獨的RDD中使用不同的不同列,則可以使用'DataFrame'。 或者,您可以使用地圖功能從RDD中提取這些列,然後收集它。 – Kaushal