Apache spark Spark批内的顺序处理

Apache spark Spark批内的顺序处理,apache-spark,apache-spark-sql,scheduled-tasks,Apache Spark,Apache Spark Sql,Scheduled Tasks,我有一个关于Spark批处理中的顺序处理的问题。这是一个程式化版本的问题,我试图得到答案,以保持它的简单 import org.apache.spark.sql.SparkSession val spark = SparkSession .builder() .appName("Simple Dataframe Processing") .config("spark.some.config.option", "some-value") .getOrCreate() // Fo

我有一个关于Spark批处理中的顺序处理的问题。这是一个程式化版本的问题,我试图得到答案,以保持它的简单

import org.apache.spark.sql.SparkSession

val spark = SparkSession
  .builder()
  .appName("Simple Dataframe Processing")
  .config("spark.some.config.option", "some-value")
  .getOrCreate()

// For implicit conversions like converting RDDs to DataFrames
import spark.implicits._

val df = spark.read.json("devices.json")

// Displays the content of the DataFrame to stdout
df.show()

// +-------------------------+
// | device-guid|   Operation|
// +----+-------+-------------
// |1234        |   Add 3    |
// |1234        |   Sub 3    |
// |1234        |   Add 2    |
// |1234        |   Sub 2    |
// |1234        |   Add 1    |
// |1234        |   Sub 1    |
// +----+-------+------------+


//I have a Database with one table with following columns
//  device-guid (primary key)   result


//I would like to take df and for each row in the df do a update operation to a single DB row, Adding or removing number as described in Operation column
//So the result I am expecting at the end of this in the DB is a single row with 

// device-guid      result
// 1234             0


df.foreach { row => 
          UpdateDB(row)  //Update the DB with the row's Operation. 
                        //Actual method not shown
    }
让我们假设我在一个spark集群中运行它,其中有5个执行器,每个执行器有2个核心,跨越5个工作节点。 Spark中有什么可以保证UpdateDB操作是按数据帧中的行顺序调度和执行的,而不是并行调度和执行的

i、 我总是希望在数据库的结果列中得到0的答案

从更大的意义上讲,问题是“即使有多个执行器和内核,什么保证了数据帧上操作的顺序处理”

你能给我指一下Spark文件吗?它表明这些任务将按顺序处理

是否需要设置任何Spark属性才能使其工作

问候,

文卡特

从更大的意义上讲,问题是“即使有多个执行器和内核,什么保证了数据帧上操作的顺序处理”

什么都没有,除了完全没有并行性,或者通过只有一个分区

单个核心可能具有类似的效果,但不能保证块的特定顺序

如果您真的需要顺序处理,那么您使用的作业工具是错误的