2016-09-26 3 views
1

bodyText이라는 열이있는 Tweets라는 데이터 프레임이 있습니다.sparkr 데이터 프레임 필터를 정규식을 사용하여 열

내가 뭘하려는 것은 bodyText에 대한 정규식 조건으로 데이터 프레임을 필터링하는 것입니다. 예를 들어 bodyText에 "집회"또는 "항의"가있는 짹짹으로 필터링하십시오. 내가 지금까지 시도 무엇

은 다음과 같습니다

Error in as.character.default(x) : no method for coercing this S4 class to a vector Calls: main ... .local -> [ -> grepl -> as.character -> as.character.default

답변

0

당신이하는 RDD에 스파크 데이터 프레임을 변환 필터를 적용하고 변환 할 수 있습니다

subset(twitter_df, grepl("(?<=\\b)rally", twitter_df$bodyText, ignore.case = TRUE)) 
filter(twitter_df, grepl("(?<=\\b)rally", twitter_df$bodyText, ignore.case = TRUE)) 

하지만 두 경우 모두

이 오류가 그것은 다시 :

# setup reproducable sample 
df <- data.frame(id=c(1:4), bodyText=c("rally","protest","text1","text2")) 
head(twitter_df.filtered) 
twitter_df <- as.DataFrame(df) 
head(twitter_df) 


# convert to rdd 
twitter_df.rdd <- SparkR:::toRDD(twitter_df) 
# filter rdd 
twitter_df.rdd.filtered <- SparkR:::filterRDD(twitter_df.rdd, function(s) { grepl("(?<=\\b)rally", s$bodyText, ignore.case = TRUE, perl = TRUE) }) 
# convert to Spark data frame 
twitter_df.filtered <- as.DataFrame(twitter_df.rdd.filtered) 
head(twitter_df.filtered) 

참고 매개 변수 perlTRUE 또는 t로 설정 그는 표현이 유효하지 않습니다.

+0

작품, 정말 고마워. as.DataFrame에 sqlContext를 추가해야했습니다. 'as.DataFrame (sqlContext, df)' –

0

당신이 Spark Sql in SparkR를 사용하는 경우, 그것은 간단 할 수와 같은 :

df <- data.frame(id=c(1:4), bodyText=c("rally","protest","text1","text2")) 

createOrReplaceTempView(df, "tweets") 
rallys <- head(sql("SELECT * FROM tweets WHERE bodyText rlike 'rally'")) 

print(rallys) 
관련 문제