У меня такая проблема:
val data = Seq(("TIM", "FIRST", "A", 1),
("BIM", "SECOND", "A", 2),
("JIM", "THIRD", "B", 1)).toDF("NAME", "POSITION", "GROUP", "INDEX")
data.show()
data.printSchema()
val title = Seq(("A", "MASTER"), ("B", "TEACHER"),
("C", "STUDENT")).toDF("LETTER", "DEGREE")
title.show()
title.printSchema()
+----+--------+-----+-----+
|NAME|POSITION|GROUP|INDEX|
+----+--------+-----+-----+
| TIM| FIRST| A| 1|
| BIM| SECOND| A| 2|
| JIM| THIRD| B| 1|
+----+--------+-----+-----+
root
|-- NAME: string (nullable = true)
|-- POSITION: string (nullable = true)
|-- GROUP: string (nullable = true)
|-- INDEX: integer (nullable = false)
+------+-------+
|LETTER| DEGREE|
+------+-------+
| A| MASTER|
| B|TEACHER|
| C|STUDENT|
+------+-------+
root
|-- LETTER: string (nullable = true)
|-- DEGREE: string (nullable = true)
//Final result
+----+--------+-------+--'--+
|NAME|POSITION| GROUP|INDEX|
+----+--------+-------+-----+
| TIM| FIRST| MASTER| 1 |
| BIM| SECOND| A| 2 |
| JIM| THIRD|TEACHER| 1 |
+----+--------+-------+-----+
Я пробовал несколько вещей:
val result = data.withColumn("GROUP", when('INDEX === 1, ???????????))
Где вопросительные знаки, я пытался вызвать UDF, но не могу получить текущее значение строки из GROUP передать как параметр в UDF. Также попытался поставить там select на TITLE и GROUP = LETTER, и ничего не получилось.
Первый фрейм данных огромен, а другой очень мал в производстве.
Это какой-то элегантный способ, не объединяя их сначала, а затем withColumn при присоединении?
Спасибо