Scala - объекты String и Column - PullRequest
       5

Scala - объекты String и Column

0 голосов
/ 29 марта 2020

Здесь переменная "exprs" имеет тип столбца (т.е. exprs: Array[org.apache.spark.sql.Column] = Array(sum(country), sum(value), sum(price))).

, почему exprs: _* сталкивается с ошибкой? Почему я должен указывать голову и хвост, которые, насколько я понимаю, относятся только к строке тип?

val resGroupByDF2 = data.groupBy($"country").agg(exprs: _*) // почему это не работает

case class (
     country: String,
     value: Double,
     price: Double
  )

  val data = Seq(
    cname("NA", 2, 14),
    cname("EU", 4, 61),
    cname("FE", 5, 1),
  )
    .toDF()

val exprs = data.columns.map(sum(_)) // here it returns exprs: Array[org.apache.spark.sql.Column] = Array(sum(country), sum(value), sum(price))

val resGroupByDF2 = data.groupBy($"country").agg(exprs.head, exprs.tail: _*) // why just agg(exprs: _*) does not work in select or agg as it is already a column type

1 Ответ

0 голосов
/ 29 марта 2020

Это из-за подписи agg.

Подпись (expr: org.apache.spark.sql.Column, exprs: org.apache.spark.sql.Column*)org.apache.spark.sql.DataFrame. Это предполагает столбец как минимум и необязательный var-arg.

...