Разделить строку в Scala на основе длины строки - PullRequest
1 голос
/ 11 ноября 2019

У меня есть таблица с двумя столбцами, один - идентификатор, а другой - значение. Мой столбец значений содержит 1488 символов. Я должен разделить этот столбец на несколько строк по 12 символов в каждой. Пример:

Фрейм данных:

ID  Value
 1  123456789987653ABCDEFGHI

Ожидаемый результат:

ID  Value
1   123456789987
1   653ABCDEFGHI

Как это можно сделать в Spark?

1 Ответ

0 голосов
/ 11 ноября 2019

Создайте UDF, чтобы разбить строку на части равной длины, используя grouped. Затем используйте explode в результирующем списке строк, чтобы сгладить его.

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

def splitOnLength(len: Int) = udf((str: String) => {
  str.grouped(len).toSeq
})

df.withColumn("Value", explode(splitOnString(12)($"Value")))
...