Regexp_extract в spark2.2.0 с ошибкой броска scala - PullRequest
0 голосов
/ 28 сентября 2018

Мой код выглядит следующим образом:

val y = Seq(("100-200"),("300-400"),("500-600")).toDF("numbersData") .withColumn("extractedData",regexp_extract($"numbersData","(\d+)-(\d+)",1)) Я хочу получить вывод со столбцом «extractData» как,

100 300 500

Но я получаю ошибку как,

error: invalid escape character .withColumn("extractedData",regexp_extract($"numbersData","(\d+)-(\d+)",1)) ^

Пожалуйста, руководство

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Использование двойной обратной косой черты в вашем шаблоне Regex "(\\d+)-(\\d+)", как указывали другие, решит проблему - хотя Regex с таким упрощенным шаблоном не требуется.Вместо этого вы можете использовать split:

df.withColumn("extractedData", split($"numbersData", "-")(0)).show
// +-----------+-------------+
// |numbersData|extractedData|
// +-----------+-------------+
// |    100-200|          100|
// |    300-400|          300|
// |    500-600|          500|
// +-----------+-------------+

Обратите внимание, что оба решения Regex и split приведут к столбцу StringType.При необходимости вы также можете применить cast("Int"), чтобы создать новый столбец IntegerType.

0 голосов
/ 28 сентября 2018

вам нужно избежать обратной косой черты.Попробуйте это

scala> val y = Seq(("100-200"),("300-400"),("500-600")).toDF("numbersData").withColumn("extractedData",regexp_extract($"numbersData","(\\d+)-(\\d+)",1)).show()
+-----------+-------------+
|numbersData|extractedData|
+-----------+-------------+
|    100-200|          100|
|    300-400|          300|
|    500-600|          500|
+-----------+-------------+

y: Unit = ()

scala>
...