我有一个数据框,其中包含名为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')"


是否有其他选择可以实现我想要的,但又不收集火花驱动程序上的所有内容?

最佳答案

您可以先使用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")


更新:在最新版本的sparklyr中,参数input.col和output.col已分别重命名为input_col和output_col。

关于r - SparklyR将一个Spark DataFrame列分为两列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41810015/

10-12 17:52