Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Tolocator是如何工作的?_Apache Spark_Hadoop_Pyspark_Hadoop2 - Fatal编程技术网

Apache spark Tolocator是如何工作的?

Apache spark Tolocator是如何工作的?,apache-spark,hadoop,pyspark,hadoop2,Apache Spark,Hadoop,Pyspark,Hadoop2,我正在努力理解tolocaterator的工作原理,我读了一些文章和博客,但我不确定有一件事 它是否一次将所有分区复制到驱动程序节点并创建迭代器?或者它一次将数据复制到一个分区,然后创建一个迭代器?它一次将引入一个分区。根据 返回包含此RDD中所有元素的迭代器 迭代器将消耗与此RDD中最大分区相同的内存 注 这会导致多个Spark作业,如果输入RDD是广泛转换的结果(例如,使用不同的分区器连接),则应首先缓存输入RDD以避免重新计算 迭代器将“消耗与最大分区一样多的内存”,可以理解为只有1个(整

我正在努力理解tolocaterator的工作原理,我读了一些文章和博客,但我不确定有一件事


它是否一次将所有分区复制到驱动程序节点并创建迭代器?或者它一次将数据复制到一个分区,然后创建一个迭代器?

它一次将引入一个分区。根据

返回包含此RDD中所有元素的迭代器

迭代器将消耗与此RDD中最大分区相同的内存

注 这会导致多个Spark作业,如果输入RDD是广泛转换的结果(例如,使用不同的分区器连接),则应首先缓存输入RDD以避免重新计算

迭代器将“消耗与最大分区一样多的内存”,可以理解为只有1个(整个)分区位于驱动程序节点上

因此,第一个分区被发送到驱动程序。如果继续迭代并到达第一个分区的末尾,第二个分区将被发送到驱动程序节点。如果未缓存父RDD,这也将导致重新计算数据