Sparkyr:使用mutate函数创建新列
如果使用Sparkyr无法解决此类问题,我感到非常惊讶:Sparkyr:使用mutate函数创建新列,r,apache-spark,sparklyr,R,Apache Spark,Sparklyr,如果使用Sparkyr无法解决此类问题,我感到非常惊讶: iris_tbl <- copy_to(sc, aDataFrame) # date_vector is a character vector of element # in this format: YYYY-MM-DD (year, month, day) for (d in date_vector) { ... aDataFrame %>% mutate(newValue=gsub("-","",d)))
iris_tbl <- copy_to(sc, aDataFrame)
# date_vector is a character vector of element
# in this format: YYYY-MM-DD (year, month, day)
for (d in date_vector) {
...
aDataFrame %>% mutate(newValue=gsub("-","",d)))
...
}
但有了这句话:
aDataFrame %>% mutate(newValue=toupper("hello"))
事情是这样的。有什么帮助吗?我强烈建议您在继续之前阅读
Sparkyr
文档。特别是,您需要阅读关于如何将R转换为SQL()的部分。简而言之,R函数的一个非常有限的子集可用于sparklyr
数据帧,而gsub
不是这些函数中的一个(但toupper
是)。如果您确实需要gsub
您必须将数据收集到本地数据帧中,然后gsub
它(您仍然可以使用mutate
),然后复制到返回spark。可能值得补充的是,可用的文档说明:
蜂巢功能
Hive的许多内置函数(UDF)和内置聚合函数(UDAF)都可以在dplyr的mutate and Summary中调用。该页面提供可用功能的列表
蜂箱
如文件中所述,可行的解决方案应通过使用:
返回替换中所有子字符串所产生的字符串
与定义的java正则表达式语法匹配的初始\u字符串
在模式中
具有替换实例。
例如,
regexp\u replace(“foobar”、“oo | ar”和“”)
返回“fb”。
注意
使用预定义字符类时必须小心:使用'\s'
作为
第二个参数将匹配字母s;'\\s'
是必要的
匹配空格等
方法
考虑到上述情况,应该可以将sparkyr
管道与
regexp\u replace
以实现对所需列应用gsub
的同源效果。删除变量
中
中的-
字符的测试代码可按如下方式生成:
aDataFrame %>%
mutate(clnD = regexp_replace(d, "-", "")) %>%
# ...
其中class(aDataFrame)
返回:“tbl\u spark”…
regexp\u是否替换sparkrlyr函数?我只能在SparkR中找到它。@dalloliogm它是一个配置单元函数,因为提供的解决方案使用了配置单元的函数。
aDataFrame %>%
mutate(clnD = regexp_replace(d, "-", "")) %>%
# ...