toLocalIterator在Java和Scala中的行为有所不同

时间:2019-05-29 11:32:28

标签: java scala apache-spark apache-spark-dataset

我正在尝试使用toLocalIterator方法将数据集转换为Java程序中的Iterator。它花费1000毫秒以上的经过时间,这远比在Scala中进行相同转换时要高。

我试图在Java和Scala中转换大小为3的数据集。转换所用的时间分别约为1000毫秒和6毫秒。

//In Java
 Dataset<Row> dataset = sparkSession.read().parquet(parquetPath);
 Dataset<Row> datasetNew = dataset.select("col1"); // outputs "3053462", "3256790", "3269055"
 long st_od = System.currentTimeMillis();
 Iterator<Row> iterator = datasetNew.toLocalIterator()
 long et_od = System.currentTimeMillis();
 logger.info("Elapsed time for iterator conversion: " + (et_od - st_od) 
 + "ms");
//In Scala 
 val data = List("3053462", "3256790", "3269055")
 val df = spark.sparkContext.parallelize(data);

 val st = System.currentTimeMillis()
 val iter = df.toLocalIterator
 val et = System.currentTimeMillis()

 println("Time", (et - st))

我期望Java代码也大约6毫秒,但是toLocalIterator操作花费1000毫秒以上。有人知道原因吗?

0 个答案:

没有答案