У меня есть 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._
Спасибо за вашу помощь.