Apache spark 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
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属性才能使其工作
问候,
文卡特
从更大的意义上讲,问题是“即使有多个执行器和内核,什么保证了数据帧上操作的顺序处理”
什么都没有,除了完全没有并行性,或者通过只有一个分区
单个核心可能具有类似的效果,但不能保证块的特定顺序
如果您真的需要顺序处理,那么您使用的作业工具是错误的