добавить новый столбец для спаркфрейма данных из списка массивов - PullRequest
1 голос
/ 21 апреля 2020

Я пытаюсь добавить новый столбец для фрейма данных, как показано ниже:

val ab c: Array [String] = ("a", "b", "c", "d")

Я пытаюсь добавить этот массив [String] в качестве нового столбца в фрейм данных и пытаюсь выполнить sha2 для этого нового столбца

var words = ab c .mkString ( "||") source = source.withColumn ("newcolumn", sha2 (col (words), 256) .cast (StringType))

Выполнено, и ошибка времени выполнения я получаю как

Исключение в потоке "main" org. apache .spark. sql .AnalysisException: не удается разрешить 'a||b||c||d||e' для заданных входных столбцов:

Ожидаемый вывод должен быть кадром данных с newcolum в качестве столбца имя и значение как varchar64 с sha2 конкатенации массива строк с ||.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 21 апреля 2020

Вам нужно использовать lit(words) и рассчитать sha2(col,256)

Example

import org.apache.spark.sql.functions._

var words=abc.mkString("||")

val source = source.withColumn("newcolumn",sha2(lit(words),256))
source.show()
//+----------------------------------------------------------------+
//|newcolumn                                                       |
//+----------------------------------------------------------------+
//|b51ff0f0a6aa9f36848b8fdc10ece7242698a4061e141c761b1ac9a08634c067|
//+----------------------------------------------------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...