scala spark использует expr для значения внутри столбца - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужно добавить новый столбец в фрейм данных с логическим значением, оценивая столбец внутри фрейма данных.Например, у меня есть кадр данных

+----+----+----+----+----+-----------+----------------+
|colA|colB|colC|colD|colE|colPRODRTCE|         colCOND|
+----+----+----+----+----+-----------+----------------+
|   1|   1|   1|   1|   3|         39|colA=1 && colB>0|
|   1|   1|   1|   1|   3|         45|          colD=1|
|   1|   1|   1|   1|   3|        447|colA>8 && colC=1|
+----+----+----+----+----+-----------+----------------+

. В моем новом столбце мне нужно оценить, является ли выражение colCOND истинным или ложным.

Это просто, если у вас есть что-то вроде этого:

  val df = List(
    (1,1,1,1,3),
    (2,2,3,4,4)
  ).toDF("colA", "colB", "colC", "colD", "colE")

  val myExpression = "colA<colC"

  import org.apache.spark.sql.functions.expr

  df.withColumn("colRESULT",expr(myExpression)).show()

+----+----+----+----+----+---------+
|colA|colB|colC|colD|colE|colRESULT|
+----+----+----+----+----+---------+
|   1|   1|   1|   1|   3|    false|
|   2|   2|   3|   4|   4|     true|
+----+----+----+----+----+---------+

Но мне нужно оценить разные выражения в каждой строке, и это внутри столбца colCOND.

Я думал создать функцию UDF со всеми столбцами, но в моем реальном кадре данных много столбцов.Как я могу это сделать?

Спасибо всем

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