toLocalIterator ведет себя по-разному в Java и Scala - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь преобразовать набор данных в итератор в 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. Кто-нибудь знает причину?

...