Странное поведение takeRight () с ListBuffer в Spark - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть scala ListBuffer и 2 переменные следующим образом:

    val parmsList = s.getBatchPARMS(a, sampleSize, batchnumber, queryName, resStr,rdocGlob, blend, pss,iterations,run_start,meta_start)
    var meta_start = 0
    var run_start = 0`

parmsList печатает как:

ListBuffer("c1", "Q9tHuman9tHealthM2tHuman0kOP>20N|20N", "e43g68t10f4i2cs40", "4.6.2.2", "5e47e7ccaeb977af8a64b88a", "c1.Q9tHuman9tHealthM2tHuman0kOP>20N|20N.e43g68t10f4i2cs40-13244.1", "1", "10" , "1", "732514", "39281", 1)

Я тогда делаю:

val parmsListDropped = parmsList.dropRight(1)            
val ids = parmsListDropped.takeRight(2)
meta_start = ids(1).toInt
run_start = ids(0).toInt

Что не получается с:

[error] Exception in thread "main" java.lang.IndexOutOfBoundsException: 1

Когда я печатаю ids, я получаю:

ListBuffer("c1", "Q9tHuman9tHealthM2tHuman0kOP>20N|20N", "e43g68t10f4i2cs40", "4.6.2.2", "5e47e7ccaeb977af8a64b88a", "c1.Q9tHuman9tHealthM2tHuman0kOP>20N|20N.e43g68t10f4i2cs40-13244.1", "1", "10" , "1", "732514", "39281")

Что не кажется правильным ...

Еще страннее, когда я делаю все это шаг за шагом в scala оболочке, я получаю:

scala> val b = ListBuffer("c1", "Q9tHuman9tHealthM2tHuman0kOP>20N|20N", "e43g68t10f4i2cs40", "4.6.2.2", "5e47e7ccaeb977af8a64b88a", "c1.Q9tHuman9tHealthM2tHuman0kOP>20N|20N.e43g68t10f4i2cs40-13244.1", "1", "10" , "1", "732514", "39281")
b: scala.collection.mutable.ListBuffer[String] = ListBuffer(c1, Q9tHuman9tHealthM2tHuman0kOP>20N|20N, e43g68t10f4i2cs40, 4.6.2.2, 5e47e7ccaeb977af8a64b88a, c1.Q9tHuman9tHealthM2tHuman0kOP>20N|20N.e43g68t10f4i2cs40-13244.1, 1, 10, 1, 732514, 39281)

scala> b.takeRight(2)
res5: scala.collection.mutable.ListBuffer[String] = ListBuffer(732514, 39281)

Как и следовало ожидать.

Я использую Scala 2.11 внутри Apache Spark 2.2.0 с некоторыми Java преобразованиями в macOS Mojave 10.14.5. Вот мой импорт:

import scala.collection.JavaConversions._
import scala.collection.mutable.ListBuffer

import org.apache.spark.sql.SparkSession

import com.mongodb.spark.MongoSpark
import org.bson.Document
import org.bson.types.ObjectId
import com.mongodb.spark.rdd.api.java.JavaMongoRDD
import com.mongodb.spark.rdd.MongoRDD
import com.mongodb.spark.config._

import org.apache.spark.api.java.JavaRDD
import java.util._
import org.apache.spark.api.java._

import net.liftweb.json.DefaultFormats
import net.liftweb.json._
import net.liftweb.json.JsonDSL._

import java.util.ArrayList

import scalaj.http._

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...