如果使用 sparklyr 无法解决此类问题,我感到非常惊讶:

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)))
   ...
}

我收到此错误:
Error: org.apache.spark.sql.AnalysisException: Undefined function: 'GSUB'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 2 pos 86
    at org.apache.spark.sql.catalyst.catalog.SessionCatalog.failFunctionLookup(SessionCatalog.scala:787)
    at org.apache.spark.sql.hive.HiveSessionCatalog.lookupFunction0(HiveSessionCatalog.scala:200)
    at org.apache.spark.sql.hive.HiveSessionCatalog.lookupFunction(HiveSessionCatalog.scala:172)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveFunctions$$anonfun$apply$13$$anonfun$applyOrElse$6$$anonfun$applyOrElse$39.apply(Analyzer.scala:884)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveFunctions$$anonfun$apply$13$$anonfun$applyOrElse$6$$anonfun$applyOrElse$39.apply(Analyzer.scala:884)
    at org.apache.spark.sql.catalyst.analysis.package$.withPosition(package.scala:48)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveFunctions$$anonfun$apply$13$$anonfun

但是有了这条线:
aDataFrame %>% mutate(newValue=toupper("hello"))

事情工作。一些帮助?

最佳答案

我强烈建议您在继续之前阅读 sparklyr 文档。特别是,您将需要阅读有关如何将 R 转换为 SQL ( http://spark.rstudio.com/dplyr.html#sql_translation ) 的部分。简而言之,有非常有限的 R 函数子集可用于 sparklyr 数据帧,并且 gsub 不是这些函数之一(但 toupper 是)。如果你真的需要 gsub 你将不得不 collect 数据到本地数据帧,然后 gsub 它(你仍然可以使用 mutate ),然后 copy_to 回到 spark。

关于r - sparklyr:创建具有 mutate 功能的新列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40285594/

10-12 23:25