2017-01-23 11 views
0

У меня есть dataframe, содержащую столбец с именем COL, которое структурировано таким образом:SparklyR отделить одну колонку Спарк DataFrame на две колонки

VALUE1###VALUE2

Следующий код работает

library(sparklyr) 
library(tidyr) 
library(dplyr) 
mParams<- collect(filter(input_DF, TYPE == ('MIN'))) 
mParams<- separate(mParams, COL, c('col1','col2'), '\\###', remove=FALSE) 

If Я удаляю collect, я получаю эту ошибку:

Error in UseMethod("separate_") : 
    no applicable method for 'separate_' applied to an object of class "c('tbl_spark', 'tbl_sql', 'tbl_lazy', 'tbl')" 

Есть ли какая-то альтернатива для достижения того, чего я хочу, но без сбора всего на моем искровом драйвере?

ответ

2

Sparklyr версия 0.5 только что был released, и она содержит ft_regex_tokenizer()function, что можно сделать:

A regex based tokenizer that extracts tokens either by using the provided regex pattern to split the text (default) or repeatedly matching the regex (if gaps is false).

library(dplyr) 
library(sparklyr) 
ft_regex_tokenizer(input_DF, input.col = "COL", output.col = "ResultCols", pattern = '\\###') 

расщепленным колонка "ResultCols" будет список.

+0

Я знаю 'ft_regex_tokenizer', но вопрос состоял в том, чтобы отделить значения и сохранить их в 2 столбцах, а не в 1 столбце списка. 'tidyr :: unsest' просто работает локально после' collect', что не подходит в моем случае, потому что мне нужно агрегировать данные, используя 1 вывод столбца ... – nachti