Как добавить столбец индексов символа в строку в кадре данных Spark? - PullRequest
0 голосов
/ 25 мая 2018

У меня есть искровой фрейм данных со столбцом двоичной строки.Я хочу добавить столбец в фрейм данных с индексами 1 в каждом элементе столбца.

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

def patternMatching(pattern: String, str: String): List[Int] =
  pattern.r.findAllMatchIn(str).map(_.start).toList


patternMatching("1", "000110010010001110")

В конце концов я пытаюсь получить приведенный ниже кадр данных;

Binary_String   |   Vec
         1010   |   List(1,3)
         1100   |   List(1,2)
         0010   |   List(3)
         0000   |   List()

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете определить UDF:

val patternMatching = udf((pattern: String, str: String) => 
    pattern.r.findAllMatchIn(str).map(_.start).toList)

Применить его к столбцу:

Seq("000110010010001110").toDF("x")
    .select(patternMatching(lit("0"),col("x")).as("x"))
    .show()
...