def loadAdditionalUserInfo()

in auditlog/src/main/scala/com/gerritforge/analytics/auditlog/broadcast/AdditionalUserInfo.scala [25:51]


  def loadAdditionalUserInfo(
      config: AuditLogETLConfig
  )(implicit spark: SparkSession): Try[AdditionalUsersInfo] = {

    val schema = new StructType()
      .add("id", IntegerType, false)
      .add("type", StringType, false)

    import spark.implicits._
    Try {
      AdditionalUsersInfo(
        config.additionalUserInfoPath
          .map { path =>
            spark.read
              .option("header", "true")
              .schema(schema)
              .csv(path)
              .as[AdditionalUserInfo]
              // We are collecting on the fair assumption that the additional user info file will fit in memory
              .collect
              .map(additionalUserInfo => additionalUserInfo.id -> additionalUserInfo)
              .toMap
          }
          .getOrElse(Map.empty[GerritAccountId, AdditionalUserInfo])
      )
    }
  }