Как извлечь значение после определенной строки в Scala (искра)? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть датафрейм с колонкой:

df =

itemType                   count
it_shampoo                  5
it_books                    5
it_mm                       5
{it_mm}                     5
it_books it_books           5
{=it_books} it_books        5

Мне нужно получить:

itemType                   count
it_shampoo                  5
it_books                    5
it_mm                       5
it_mm                       5
it_books                    5
it_books                    5

Как извлечь, заменяет it_books it_booksОт {=it_books} it_books до it_books.Тип элемента всегда будет следовать it_

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Регулярное выражение ниже также работает

scala> val df = Seq(("it_shampoo",5),
     | ("it_books",5),
     | ("it_mm",5),
     | ("{it_mm}",5),
     | ("it_books it_books",5),
     | ("{=it_books} it_books",5)).toDF("itemType","count")
df: org.apache.spark.sql.DataFrame = [itemType: string, count: int]

scala> df.select( regexp_replace('itemtype,""".*\b(\S+)\b(.*)$""", "$1").as("replaced"),'count).show
+----------+-----+
|  replaced|count|
+----------+-----+
|it_shampoo|    5|
|  it_books|    5|
|     it_mm|    5|
|     it_mm|    5|
|  it_books|    5|
|  it_books|    5|
+----------+-----+


scala>
0 голосов
/ 11 октября 2018

Попробуйте regex, ^.*?(it_[\w]+).*$ для itemType и замените первой захваченной группой $1.

Regex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...