Lev*_*man 2 hive r apache-spark-sql sparklyr
我有下面的代码,它使用使用 Sparklyr 调用 spark SQL API 的包装函数对数据集进行 SQL 转换。然后我使用“invoke(“createOrReplaceTempView”,“name”)”将 Spark 环境中的表保存为 spark 数据框,以便我可以在以后的函数调用中调用。然后我使用 dplyr 代码“mutate”调用配置单元函数“regexp_replace”将字母转换为数字(0)。我他们需要再次调用一个 SQL 函数。
但是,这样做我似乎必须使用 sparklyr 中的“copy_to”函数。在大型数据集上,“copy_to”函数会导致以下错误:
Error: org.apache.spark.SparkException: Job aborted due to stage
failure: Total size of serialized results of 6 tasks (1024.6 MB) is
bigger than spark.driver.maxResultSize (1024.0 MB)
Run Code Online (Sandbox Code Playgroud)
有没有替代“copy_to”的方法,它允许我获得一个火花数据框,然后我可以用 SQL API 调用它?
这是我的代码L
sqlfunction <- function(sc, block) {
spark_session(sc) %>% invoke("sql", block)
}
sqlfunction(sc, "SELECT * FROM
test")%>%invoke("createOrReplaceTempView",
"name4")
names<-tbl(sc, "name4")%>%
mutate(col3 = regexp_replace(col2, "^[A-Z]", "0"))
copy_to(sc, names, overwrite = TRUE)
sqlfunction(sc, "SELECT * FROM
test")%>%invoke("createOrReplaceTempView",
"name5")
final<-tbl(sc, "name5")
Run Code Online (Sandbox Code Playgroud)
如果你有reprex会有所帮助,但试试
final <- names %>%
spark_dataframe() %>%
sqlfunction(sc, "SELECT * FROM test") %>%
sdf_register("name5")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1175 次 |
最近记录: |