Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Scala ApacheSpark:什么时候不使用mapPartition和foreachPartition?_Scala_Apache Spark_Apache Spark Sql_Spark Dataframe - Fatal编程技术网

Scala ApacheSpark:什么时候不使用mapPartition和foreachPartition?

Scala ApacheSpark:什么时候不使用mapPartition和foreachPartition?,scala,apache-spark,apache-spark-sql,spark-dataframe,Scala,Apache Spark,Apache Spark Sql,Spark Dataframe,我知道,当我们想要为一组RDD而不是单个RDD元素初始化一些资源时,理想情况下应该使用mapPartition和foreachPartition。例如,在为每个数据分区初始化JDBC连接的情况下。但是,在某些情况下,我们不应该使用它们中的任何一个,而应该使用普通的map()和foreach()转换和操作。当您编写使用mapPartition或foreachPartition的Spark作业时,您可以只修改分区数据本身,也可以分别迭代分区数据。作为参数传递的匿名函数将在执行器上执行,因此没有可行的

我知道,当我们想要为一组RDD而不是单个RDD元素初始化一些资源时,理想情况下应该使用mapPartition和foreachPartition。例如,在为每个数据分区初始化JDBC连接的情况下。但是,在某些情况下,我们不应该使用它们中的任何一个,而应该使用普通的map()和foreach()转换和操作。

当您编写使用mapPartition或foreachPartition的Spark作业时,您可以只修改分区数据本身,也可以分别迭代分区数据。作为参数传递的匿名函数将在执行器上执行,因此没有可行的方法来执行从一个特定执行器调用所有节点的代码,例如:df.reduceByKey。此代码只能从驱动程序节点执行。因此,只能从驱动程序代码访问数据帧、数据集和spark会话

请详细讨论这个问题和可能的解决方案