Scala столбцы списка динамически удаляют столбцы из списка - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть код spark scala, который работает следующим образом:

         val ua_list = List()
            for (a <- a_col_names)
                if (some condition ) {
                       ua_list  :+ (a)

Теперь я вызываю список в датафрейме, чтобы удалить все столбцы из списка

             val df_d = df_p.drop(ua_list.map(name => col(name)): _*)   

              The error i am facing is no `: _*' annotation allowed here (such annotations are only allowed in arguments to *-parameters)

Не уверен, что именно проблема? Любые предложения и идеи.

1 Ответ

3 голосов
/ 24 апреля 2020

если вы используете _* означает все столбцы в списке, нет необходимости map и получать каждый столбец.

просто вы можете сделать, как показано ниже.

df_p.drop(ua_list : _*)

Полный пример:

import spark.implicits._
  val df = Seq(
    (123, "ITA", 1475600500, 18.0),
    (123, "ITA", 1475600500, 18.0),
    (123, "ITA", 1475600516, 19.0)
  ).toDF("Value", "Country", "Timestamp", "Sum")


  df.show
  val ua_list = List("Value", "Timestamp")

  df.drop(ua_list: _*).show

Результат:

+-----+-------+----------+----+
|Value|Country| Timestamp| Sum|
+-----+-------+----------+----+
|  123|    ITA|1475600500|18.0|
|  123|    ITA|1475600500|18.0|
|  123|    ITA|1475600516|19.0|
+-----+-------+----------+----+

+-------+----+
|Country| Sum|
+-------+----+
|    ITA|18.0|
|    ITA|18.0|
|    ITA|19.0|
+-------+----+
...