Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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/spark使每个分区在DataFrame中顺序执行?_Scala_Apache Spark_Apache Spark Sql_Spark Dataframe - Fatal编程技术网

如何使用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
来处理特定的分区,但在处理完整的数据集时它是无用的

此外,这不是广播变量的工作方式。执行任务时,您不应尝试修改它们