我正在尝试使用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毫秒以上。有人知道原因吗?