如何使用 sparklyr 行绑定两个 Spark 数据帧?
How to row bind two Spark dataframes using sparklyr?
我尝试了以下方法来行绑定两个 Spark 数据帧,但我给出了一条错误消息
library(sparklyr)
library(dplyr)
sc <- spark_connect(master = "local")
iris_tbl <- copy_to(sc, iris)
iris_tbl1 <- copy_to(sc, iris, "iris1")
iris_tbl2 = bind_rows(iris_tbl, iris_tbl1)
将两个 Spark 数据帧绑定在一起的最有效方法是什么?
您可以使用dplyr::union_all
dplyr::union_all(iris_tbl1, iris_tbl1)
或sparklyr::sdf_bind_rows
:
sdf_bind_rows(
iris_tbl %>% select(-Sepal_Length),
iris_tbl1 %>% select(-Petal_Length)
)
如果模式兼容,但列的顺序不匹配,您也可以使用 Spark 自己的unionByName
。
sdf_union_by_name <- function(x, y) {
invoke(spark_dataframe(x), "unionByName", spark_dataframe(y)) %>%
sdf_register()
}
sdf_union_by_name(
iris_tbl %>% select(Sepal_Length, Petal_Length),
iris_tbl %>% select(Petal_Length, Sepal_Length)
)
我尝试了以下方法来行绑定两个 Spark 数据帧,但我给出了一条错误消息
library(sparklyr)
library(dplyr)
sc <- spark_connect(master = "local")
iris_tbl <- copy_to(sc, iris)
iris_tbl1 <- copy_to(sc, iris, "iris1")
iris_tbl2 = bind_rows(iris_tbl, iris_tbl1)
将两个 Spark 数据帧绑定在一起的最有效方法是什么?
您可以使用dplyr::union_all
dplyr::union_all(iris_tbl1, iris_tbl1)
或sparklyr::sdf_bind_rows
:
sdf_bind_rows(
iris_tbl %>% select(-Sepal_Length),
iris_tbl1 %>% select(-Petal_Length)
)
如果模式兼容,但列的顺序不匹配,您也可以使用 Spark 自己的unionByName
。
sdf_union_by_name <- function(x, y) {
invoke(spark_dataframe(x), "unionByName", spark_dataframe(y)) %>%
sdf_register()
}
sdf_union_by_name(
iris_tbl %>% select(Sepal_Length, Petal_Length),
iris_tbl %>% select(Petal_Length, Sepal_Length)
)