forEachAsync vs forEachPartitionAsync有什麼區別?Apache Spark中的forEachAsync vs forEachPartitionAsync有什麼區別?
如果我在這裏猜測是我下面會說,但請糾正我,如果我wrong.forEachAsync剛剛經歷值由一個在一個異步精氣神遍歷所有分區的一個
forEachPartitionAsync:扇出每個分區並在不同的工作人員中並行運行每個分區的lambda。這裏的lambda將以異步的方式逐個遍歷該分區中的值。
但是等待,rdd操作應該事實上並行執行嗎?所以如果我調用應該並行執行的rdd.forEachAsync不是嗎?我想我有點困惑,現在forEachAsync和forEachPartitionAsync之間究竟有什麼不同?除了分別將Tuple與Tuple的迭代器傳遞給lambda。
非常感謝!我現在明白了。當從數據庫中檢索記錄時(例如表掃描),你會用什麼?你得到一個Iterable,當你做'iterable.iterator.next()'我不確定它是打開一個新的連接還是使用現有的連接?但我可以說的是,沒有給用戶的連接啓動或關閉過程,因爲它是由spark- - 連接器保管的。 –
user1870400
從數據庫中檢索數據時,如果您使用Spark JDBC,則Spark將在內部爲您管理連接。但讓我們說,在DB中有一些小的參考數據的情況下,您可以使用forEachPartition來創建「par分區」連接,然後將數據拉出並最終關閉它完成。如果接受答案,如果它回答你的問題。謝謝 ! – RBanerjee