Spark SQL не распознает \ d + - PullRequest
       48

Spark SQL не распознает \ d +

0 голосов
/ 23 октября 2019

Я пытаюсь использовать функцию regex_extract, чтобы получить последние три цифры в строке ABCDF1_123 с помощью:

regexp_extrach('ABCDF1_123', 'ABCDF1_(\d+)', 1)

, и она не захватывает группу. Если я изменю вызов функции на:

regexp_extrach('ABCDF1_123', 'ABCDF1_([0-9]+)', 1)

, это сработает. Кто-нибудь может дать мне некоторое представление о том, почему? Я также собираю данные из базы данных Postgres, используя соединение JDBC.

1 Ответ

1 голос
/ 23 октября 2019

Я запустил regexp_extract, и оба они выдают тот же вывод, как показано ниже


from pyspark.sql import Row
from pyspark.sql.functions import lit, when, col, regexp_extract

l = [('ABCDF1_123')]
rdd = sc.parallelize(l)
sample = rdd.map(lambda x: Row(name=x))
sample_df = sqlContext.createDataFrame(sample)

not_working = r'ABCDF1_(\d+)'
working = r'ABCDF1_([0-9]+)'

sample_df.select(regexp_extract('name',not_working,1).alias('not_working'),
                 regexp_extract('name',working,1).alias('working')).show(10)


+-----------+-------+
|not_working|working|
+-----------+-------+
|        123|    123|
+-----------+-------+

Это то, что вы ищете?

...