登录火花|懒惰评估对记录的影响



我在Java中编写的火花代码的逻辑流以下。我需要捕获每次迭代的时间。

// Start Spark Job - create configuration and spark context
for ( i < 10)
{
log.info("Start Time of i" + new Date())
    DataFrameObj.Count
    sqlContext.sql("select * from employee")
    SaveAsTextFile
log.info("End Time  Time of i" + new Date())
}
//Exit Spark Job

此记录的行为会正确吗?我困惑的是,记录将发生,但由于Spark的懒惰评估性质,实际执行时间会有所不同。

任何指针?

有条件循环,例如将执行Spark变换和动作的顺序执行。您的情况您可以获得每个动作的预期耗时。

val  testDF = sc.parallelize(List(("a", "b", "c", "d"))).toDF()  
for (i <- 1.until( 10 )) {
      println( "Start Time of " + i + new Date() )
      testDF.show( i )
      println( "End Time  Time of " + i + new Date() )
    }

启用Spark Parallelism的替代方法是使用Scala(Java 8具有相似的功能(集合功能如下。

 1.until( 10 ).par.foreach( i => {
      println( "Start Time of " + i + new Date() )
      testDF.show( i )
      println( "End Time  Time of " + i + new Date() )
    }
    )

最新更新