Доступ к ArrayList вне вложенного блока If в Scala - PullRequest
0 голосов
/ 09 мая 2018

У меня есть следующий код: -

 var ArrayStop = new ArrayList[imeistoppage]()
 val listings = rddStopCalculate.zipWithIndex().map(p => {
        if (p._2 == 0) {
          imei = p._1.imei
          lat = p._1.latitude
          long = p._1.longitude
          gpsdt = p._1.gpsdt
        } else if (p._2 > 0 && p._2 != lastindex) {
          if (p._1.imei.equals(imei) && p._1.latitude == lat && p._1.longitude == long) {
            flag += 1
            newgpsdt = p._1.gpsdt
          } else {
            if (flag > 0) {
              timeDiff = newgpsdt.getTime() - gpsdt.getTime()
              if (timeDiff > 60000) {
                ArrayStop.add(imeistoppage(p._1.imei, lat, long, timeDiff))
              }
              flag = 0
            }
            imei = p._1.imei
            lat = p._1.latitude
            long = p._1.longitude
            gpsdt = p._1.gpsdt
          }
        } else {
          if (p._1.imei.equals(imei) && p._1.latitude == lat && p._1.longitude == long) {
            flag += 1
            newgpsdt = p._1.gpsdt
          }
          if (flag > 0) {
            timeDiff = newgpsdt.getTime() - gpsdt.getTime()
            if (timeDiff > 60000) {
              ArrayStop.add(imeistoppage(p._1.imei, lat, long, timeDiff))
            }
            flag = 0
          }
        }
        ArrayStop
      }).collect()

      val returnList = listings(listings.length - 1)
      val tempCollection = returnList.asScala
      val tempRDD = sc.parallelize(tempCollection)
      tempRDD.saveToCassandra("db", "table", SomeColumns("imei", "lat", "long", "duration"))

Как мы можем видеть в приведенном выше коде, я фактически добавляю данные в ArrayStop только для определенных условий IF, и я хочу, чтобы это было доступно вне этого цикла rdd, но я не смог этого сделать, поэтому я создал переменную "перечисления" для хранить данные, которые на самом деле занимают все строки, тогда как я хочу только те записи, которые добавлены в ArrayStop. Итак, каков наилучший способ вывести любой массив за пределы вложенного блока If-else. Это отличается от этого вопроса Scala spark, список буферов пуст Спасибо,

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