做dplyr变异支持runif

时间:2017-10-04 14:57:04

标签: r apache-spark dplyr sparklyr

我想使用mutate生成正态分布的随机数作为列。我尝试使用runif(),但它会在大规模数据上引发错误。

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

我得到的错误是:

  

错误:org.apache.spark.sql.AnalysisException:未定义的函数:   &#39; RUNIF&#39 ;.此功能既不是注册的临时功能也不是   在数据库中注册的永久功能&#39; temp_data&#39;。第1行   位于org.apache.spark.sql.catalyst.catalog.SessionCatalog.failFunctionLookup(SessionCatalog.scala:999)的pos 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)

1 个答案:

答案 0 :(得分:0)

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

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

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