如何使用scala/spark使每个分区在DataFrame中顺序执行?
我有一个数据帧,我想让第一个分区第一次执行,第二个分区第二次执行,这是我的代码,但它不工作,我应该怎么做,使每个分区执行顺序如何使用scala/spark使每个分区在DataFrame中顺序执行?,scala,apache-spark,apache-spark-sql,spark-dataframe,Scala,Apache Spark,Apache Spark Sql,Spark Dataframe,我有一个数据帧,我想让第一个分区第一次执行,第二个分区第二次执行,这是我的代码,但它不工作,我应该怎么做,使每个分区执行顺序 val arr = Array(1, 7, 3, 3, 5,21, 7, 3, 9, 10) var df=sc.parallelize(arr,4).toDF("aa") var arrbrocast=new HashMap[Int,Double]() val bro=m_sparkCtx.broadcast(arrbr
val arr = Array(1, 7, 3, 3, 5,21, 7, 3, 9, 10)
var df=sc.parallelize(arr,4).toDF("aa")
var arrbrocast=new HashMap[Int,Double]()
val bro=m_sparkCtx.broadcast(arrbrocast)
val rdd=df.rdd.mapPartitionsWithIndex((partIdx,iter)=>{
var flag=true
println("----"+bro.value.size)
while (flag){
if(bro.value.contains(partIdx-1)) {
flag = false
}
}
bro.value+=(partIdx->1.0)
println(bro.value.get(partIdx-1).get)
iter
})
rdd.count()
如果希望按顺序处理数据,请不要使用Spark。打开文件并逐行读取输入流。理论上,您可以使用
SparkContext.runJob
来处理特定的分区,但在处理完整的数据集时它是无用的
此外,这不是广播变量的工作方式。执行任务时,您不应尝试修改它们