1
我有下面的代碼需要一個數據集使用包裝函數對它進行SQL轉換,該函數使用Sparklyr調用spark API。然後,我使用「invoke(」createOrReplaceTempView「,」name「)」將表格作爲Spark數據框保存在Spark環境中,以便我可以調用該函數以進行未來的函數調用。然後我使用dplyr代碼「mutate」來調用配置單元函數「regexp_replace」將字母轉換爲數字(0)。我需要再次調用SQL函數。替代copy_to在sparklyr中處理大型數據集
不過要做到這一點,我似乎必須使用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調用?
這裏是我的CODEL
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")
這正是我終於實現了,這是很好。 –
不會sdf_register基本上創建一個視圖,並不會將數據保存到磁盤或內存?我問,因爲我正在做一個大連接,並且注意到sdf_register沒有保留結果中的數據,我不得不等待連接重新運行。只是想學習。 – ansek