Записывать файлы паркета в разные пути в s3 на основе сопоставления с образцом черты - PullRequest
0 голосов
/ 06 апреля 2020

Я хочу создать 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: это

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