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])
)
}
}