SparklyR将一个Spark DataFrame列分成两列

时间:2017-01-23 15:34:50

标签: r dplyr tidyr sparklyr

我有一个包含名为 COL 的列的数据框,其结构如下:

  

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 个答案:

答案 0 :(得分:2)

Sparklyr 0.5版本刚刚released,它包含可以执行此操作的ft_regex_tokenizer() function

  

基于正则表达式的标记生成器,通过使用提取标记来提取标记   提供正则表达式模式以分割文本(默认)或重复   匹配正则表达式(如果间隙是假的)。

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

拆分列&#34; ResultCols&#34;将是一个清单。

答案 1 :(得分:2)

您可以使用ft_regex_tokenizer,然后使用sdf_separate_column。

ft_regex_tokenizer会根据正则表达式将列拆分为矢量类型。 sdf_separate_column会将其拆分为多个列。

mydf %>% 
    ft_regex_tokenizer(input.col="mycolumn", output.col="mycolumnSplit", pattern=";") %>% 
    sdf_separate_column("mycolumnSplit", into=c("column1", "column2")