Я работаю над Apache spark 2.3.0 cloudera4, и у меня возникла проблема с выбором столбца c в зависимости от значения на карте.
У меня есть эти входные данные, фрейм данных:
+---+---+---+...+
| id| c1| c2| cN|
+---+---+---+...+
| a|1.0|2.0|...|
| a|3.0|4.0|...|
| b|5.0|6.0|...|
| c|7.0|8.0|...|
+---+---+---+---+
Каждый столбец "c" имеет двойной тип.
И карта:
Map("a" -> "c1", "b" -> "c2", "c" -> "c1")
Мне нужен этот вывод:
+---+---+
| id| c|
+---+---+
| a|1.0|
| a|3.0|
| b|6.0|
| c|7.0|
+---+---+
Каков наилучший способ, с точки зрения производительности, получить выходные данные?
Теперь я перебираю ключ карты, выбираю столбец значений col и id с предложением where и выполняю объединение с предыдущим шагом (первый шаг выполняется с использованием пустого кадра данных). Я думаю, что такого рода операции снижают производительность моего процесса.