首页 > 解决方案 > 执行期货列表,只有列表中的前两个被执行 - Scala

问题描述

我有以下代码并readCSV从路径中读取并转储数据库中的记录。但是,只有前两个列表值我才能看到数据库中的行。知道有什么问题吗?我想readCSV为所有 AccountListValues 执行。readCSV返回一个Future[Unit]

val AccountsList = List("account", "accountstd","accountcvg","accountcvgstd")

val futuresBuffer = new ListBuffer[Future[Unit]]()
taskInput.dataSet.foreach(exporttype => {
  exporttype.toLowerCase match {
    case "accounts" => {
      AccountsList.foreach(tableName => {
        logger.info(s"Listvalue $tableName")
        val csvPath = wrapper.filter(s"/${taskInput.parquetFilePath}/$tableName/*.csv").get(0)
        logger.info(s"csvPath - $csvPath")
        futuresBuffer += sqlBulkCopy.readCSVFile(csvPath,
          taskInput.sqlServerJdbcString, tableName, rmsStorageWrapper)
      })
    }
    case "geography" =>
    case "locations" =>
  }
})
   
val remaining = new AtomicInteger(futuresBuffer.length)
futuresBuffer foreach {
  _ onComplete {
    case s@ Success(_) => {
      if (remaining.decrementAndGet() == 0) {
        // Arbitrarily return the final success
        s.value
      }
    }
    case f@Failure(_) => {
      logger.error(f.exception.getMessage)
    }
  }//onComplete
}

标签: scalafuture

解决方案


推荐阅读