подсчитать количество слов в каждой строке - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь перевести R-код в spark, используя sparklyr. У меня возникают проблемы с некоторыми функциями, чтобы выполнить следующие действия:

-Считать общее количество слов в строке:например word = "Привет, как дела", количество слов: 4 -Считать общее количество символов в первом слове: например: word = "Привет, как дела", количество символов в первом слове: 5

-Счет общего количества символов в первом слове: например: word = "Привет, как дела", количество символов во втором слове: 3

Я пробовал с dpylr и stringrпакет, но я не могу получить то, что мне нужно.

Я подключаюсь к сеансу искры

install.packages("DBI")
install.packages("ngram")

require(DBI)
require(sparklyr)
require(dplyr)
require(stringr)
require(stringi)
require(base)
require(ngram)

# Spark Config 

config <- spark_config()
config$spark.executor.cores <- 2
config$spark.executor.memory <- "4G"

spark <- spark_connect(master = "yarn-client",version = "2.3.0",app_name = "Test", config=config)

Затем я пытаюсь получить некоторые данные с помощью оператора SQL

test_query<-sdf_sql(spark,"SELECT ID, NAME  FROM table.name LIMIT 10")

NAME <- c('John Doe','Peter Gynn','Jolie Hope')
ID<-c(1,2,3)

test_query<-data.frame(NAME,ID) # ( this is the example data, here it is in R data frame, but I have on a Spark Data Frame)



Когда я пытаюсь заняться проектированием объектов, в последней строке появляется сообщение об ошибке

test_query<-test_query %>% 
mutate(Total_char=nchar(NAME))%>% # this works good
mutate(Name_has_numbers=str_detect(NAME,"[[:digit:]]"))%>% # Works good
mutate(Total_words=str_count(NAME, '\\w+')) # I got an error

Я получаю следующее сообщение об ошибке: Ошибка: org.apache.spark.sql.AnalysisException: Неопределенная функция: 'STR_COUNT'.Эта функция не является ни зарегистрированной временной функцией, ни постоянной функцией, зарегистрированной в базе данных «по умолчанию».

-Счет общего количества слов в строке: например, слово = «Привет, как дела», числослов: 4 -Считать общее количество символов в первом слове: например: слово = "Привет, как дела", количество символов в первом слове: 5

-Считать общее количество символов впервое слово: например: word = "Привет, как дела", количество символов во втором слове: 3

1 Ответ

0 голосов
/ 16 апреля 2019
> library(tidyverse)
> test_query %>% 
      mutate(NAME = as.character(NAME),
        word_count = str_count(NAME, "\\w+"),     # Count the total number of words in a row
           N_char_first_word = nchar((gsub("(\\w+).*", "\\1", NAME)))  #Count the total number of character in the first word
                    )
        NAME ID word_count N_char_first_word
1   John Doe  1          2                 4
2 Peter Gynn  2          2                 5
3 Jolie Hope  3          2                 5
...