【发布时间】:2018-03-16 00:50:12
【问题描述】:
我想使用 mutate 生成正态分布的随机数作为列。我尝试使用runif(),但它会在大规模数据上引发错误。
extract_grp <- extract_grp %>%
mutate(rand = runif(sdf_nrow(extract_grp)))
glimpse(extract_grp)
得到的错误是:
错误:org.apache.spark.sql.AnalysisException:未定义函数: 'RUNIF'。此函数既不是注册的临时函数,也不是 在数据库“temp_data”中注册的永久函数。; 1号线 org.apache.spark.sql.catalyst.catalog.SessionCatalog.failFunctionLookup(SessionCatalog.scala:999)的位置 101 在 org.apache.spark.sql.hive.HiveSessionCatalog.lookupFunction0(HiveSessionCatalog.scala:202) 在 org.apache.spark.sql.hive.HiveSessionCatalog.lookupFunction(HiveSessionCatalog.scala:174) 在 org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveFunctions$$anonfun$apply$13$$anonfun$applyOrElse$6$$anonfun$applyOrElse$39.apply(Analyzer.scala:897)
【问题讨论】:
-
在您的问题中包含minimal reproducible example 会增加您获得答案的机会。
-
感谢 jsb 的回复。但我怀疑它是否适用于 dplyr 和 spark 数据帧。此外,我想生成正态分布的随机数。我没有找到任何对我有用的内容,或者我不完全理解您要提及的内容。请解释我是否需要更正。
-
如果您的问题由两个不同的问题组成,请将它们分开并提出两个问题而不是一个嵌套问题。
-
如果您使用
dplyr(和sparklyr?)连接到 Spark 集群,您应该在问题中提及这一点。问题不在于您的数据是大规模的,问题在于它存储在 Spark 中,而 dplyr 不知道如何将runif转换为 Spark 命令。 -
为此道歉。感谢 Gregor 接受我的关注。是的,你是对的,它是 spark 和 dplyr 的问题。有没有其他选择。提前致谢。
标签: r apache-spark dplyr sparklyr