Замена специальных символов в столбце с помощью SparkR

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

 <a href="mailto:[email protected]">[email protected]</a>
<a href="mailto:MICAHELBAHOU@YAHO">[email protected]</a>…

Но мне просто нужны следующие значения в моем столбце

[email protected]
[email protected]

Я попытался использовать substring_index, как показано ниже.

df$EMAIL_ADDR <- SparkR::substring_index(df$EMAIL_ADDR, "<", -1)
df$EMAIL_ADDR <- SparkR::substring_index(df$EMAIL_ADDR, ">", 1)

Но значения столбцов не меняются. Я также пробовал с разными значениями int.

Любая помощь очень ценится


person sag    schedule 22.04.2016    source источник


Ответы (1)


Использование основных регулярных выражений:

df <- data.frame(email_addr=c(
    '<a href="mailto:[email protected]">[email protected]</a>',
    '<a href="mailto:MICAHELBAHOU@YAHO">[email protected]</a>'
))

sdf <- createDataFrame(sqlContext, df)

email <- alias(regexp_extract(sdf$email_addr, "(?<=\\>)(.*)(?=\\<)", 1), "email")

select(sdf, email) %>% head()
##                  email
## 1         [email protected]
## 2 [email protected]

withColumn(sdf, "email", email)
## DataFrame[email_addr:string, email:string]

Используя HiveContext и XPath UDF:

hiveContext <- sparkRHive.init(sc)
hdf <- createDataFrame(hiveContext, df)

xpath_email <- alias(expr("xpath(email_addr, '/a/text()')"), "email")

select(hdf, xpath_email) %>% head()
##                  email
## 1         [email protected]
## 2 [email protected]


withColumn(hdf, "email", xpath_email)
## DataFrame[email_addr:string, email:array<string>]

Обратите внимание, что XPath возвращает массив. Если вам нужны отдельные элементы, вы можете explode:

withColumn(hdf, "email", explode(xpath_email))

or getItem:

withColumn(hdf, "email", getItem(xpath_email, 0L))
person zero323    schedule 25.04.2016