r - 用于大型数据集的 sparklyr 中 copy_to 的替代方案

标签 r hive 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)

是否有替代“copy_to”的方法可以让我获得一个可以使用 SQL API 调用的 spark 数据帧?

这是我的代码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")

最佳答案

如果你有一个reprex会有所帮助,但试试

final <- names %>%
  spark_dataframe() %>%
  sqlfunction(sc, "SELECT * FROM test") %>%
  sdf_register("name5")

关于r - 用于大型数据集的 sparklyr 中 copy_to 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44401202/

相关文章:

r - 定期切换 Shiny 仪表板中的选项卡

excel - 将 R 中的图形另存为 Excel 中的可编辑图形

hive - 如何更改 01/23/2020 11 :37:23 PM to ISO dateformat

apache-spark - 分组以将 hive 中的多列值合并为一列

scala - 如何将基于案例类的 RDD 转换为 DataFrame?

r - `setDT` 包中的 `data.table` 错误

r - ggplot2:stat_summary 在尝试将函数参数作为参数传递时抛出错误,而不是硬编码

shell - 如何使用作业名称从YARN日志中获取用于已完成hadoop作业的资源?

hadoop - 如何获取现有 Hive 表的 SerDe 属性

scala - 如何检查点数据帧?