SparkR regexp_extract函数的问题

问题描述 投票:0回答:1

数据

我处理的是一个大型数据集(2.8亿行),Spark和R看起来很好地工作。

问题

SparkR的regexp_extract函数遇到问题。我认为它的工作方式类似于Stringr的str_detect,但我还没有设法使其工作。 regexp_extract的文档有限。您能帮我一下吗?

Reprex

这里是一个reprex,我尝试识别没有空格的字符串并将后缀“ 00:01”粘贴为后缀。

# Load packages
library(tidyverse)
library(sparklyr)
library(SparkR)

# Create data
df <- data.frame(sampletaken = c("06/03/2013", "29/11/2005 8:30", "06/03/2013", "15/01/2007 12:25", "06/03/2013", "15/01/2007 12:25"))

# Create Spark connection
sc <- spark_connect(master = "local", spark_home = spark_home_dir())

# Transfer data to Spark memory
df <- copy_to(sc, df, "df", overwrite = TRUE)

# Modify data
df1 <- df %>%
  dplyr::mutate(sampletaken = ifelse(regexp_extract(sampletaken, " "), sampletaken, paste(sampletaken, "00:01")))

# Collect data as dataframe
df1 <- df1 %>% as.data.frame()
head(df1$sampletaken)

错误

错误:org.apache.spark.sql.AnalysisException:由于数据类型不匹配而无法解析'(NOT regexp_extract(df。sampletaken,'',1)))':参数1需要布尔类型,但是,'regexp_extract (df。sampletaken,'',1)'是字符串类型。第1行pos 80;

r apache-spark sparkr
1个回答
0
投票

我不熟悉SparkR,但似乎函数regex_extract返回一个字符串(可能是字符串中的匹配模式),而不是ifelse函数所要求的布尔值。

您可以尝试将返回值与空字符串进行匹配。

发件人:https://docs.data.world/documentation/sql/reference/functions/regexp_extract.html

参考/功能/REGEXP_EXTRACT

在搜索操作中用于复杂模式匹配(包括重复和交替)的字符串函数。有关正则表达式的Java格式的更多信息,请参见:https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html。参数类型说明输入字符串

用于搜索与正则表达式匹配的字符串的字符串。正则表达式字符串

要匹配的正则表达式组整数

可选的正则表达式组号,定义将返回匹配字符串的哪一部分返回:字符串

© www.soinside.com 2019 - 2024. All rights reserved.