Я хочу создать 2 типа метри c: metricA или metricB после преобразования другого набора данных. Если определенное условие выполнено, оно будет генерировать как metricA, так и B, если условие не выполнено, генерировать только metri c A. Идея состоит в том, чтобы записать 2 метрики в 2 разных пути (pathA, pathB).
sealed trait Metric {
def write
}
case class MetricA (a: Int, b: Int, filtered_unit: List[Double]) extends Metric {
override def write: Unit = ???
}
case class MetricB (a: Int, filtered_unit: List[Double]) extends Metric {
override def write: Unit = ???
}
def createA: Metric = {
MetricA(1, 1, List(1.0, 2.0)
}
def createB: Metric = {
MetricB(1, List(10.0, 20.0)
}
case class original (id : Int, units: List[Double])
val originalDF: DataFrame
val result: Dataset[Metric] =
originalDF.as[original]
.flatMap { r =>
if (r.id == 21) createA :: createB :: Nil
else createA :: Nil
}
Теперь, когда у меня есть набор данных [Metric], как я могу записать MetricA в pathA и MetricB в pathB (паркет). ref: это