2017-01-23 108 views
0

我有包含命名COL柱,其以这种方式构成一个数据帧:SparklyR一个火花数据帧列分离成两列

VALUE1###VALUE2

以下代码工作

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

如果我删除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 :: unnest'在'collect'之后在本地工作,这在我的情况下是不合适的,因为我必须使用1个输出列汇总数据... – nachti