Я пытаюсь преобразовать набор данных в итератор в Java-программе, используя метод toLocalIterator. Это стоит 1000+ мс прошедшего времени, что намного выше, чем при выполнении того же преобразования в Scala.
Я пытался преобразовать набор данных размером 3 в Java и Scala. Прошедшее время для преобразования было около 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))
Я ожидал около 6 мс в коде Java, но это стоит 1000 + мс для операции toLocalIterator. Кто-нибудь знает причину?