【问题标题】:do dplyr mutate support runif做 dplyr mutate 支持 runif
【发布时间】: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


【解决方案1】:

rand() 在一定程度上解决了我的问题。

extract_grp <- extract_grp %>%
    mutate(rand = rand())
    glimpse(extract_grp)

我可以为我的蜂巢表生成随机序列。但我坚持的是使用播种。 set.seed() 适用于本地 R,但确实在 sparklyr 上执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2016-01-28
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多