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