我知道我可以将稀疏矩阵转换为 Dataframe,然后将其转换为 Spark Dataframe。但是,我的数据非常大,无法转换为普通的 Dataframe。因此,我希望能够直接将稀疏矩阵转换为 Spark Dataframe。
这是一个具有 250k x 250k 稀疏矩阵的可重现示例。
library(sparklyr)
library(Matrix)
m = Matrix(0, 250000, 250000)
m[sample(250000, 100), sample(250000, 100)] = 1
sc <- spark_connect(master = "local", version = "3.3")
sprk_m = copy_to(sc, summary(m))
# Source: spark<?> [?? x 3]
# i j x
# <int> <int> <dbl>
# 1 2193 306 1
# 2 3609 306 1
# 3 5624 306 1
# 4 8624 306 1
# 5 11861 306 1
# 6 13360 306 1
# 7 18410 306 1
# 8 23652 306 1
# 9 26951 306 1
# 10 27541 306 1
# … with more rows
# ℹ Use `print(n = ...)` to see more rows
注意存储
summary(m)
的中间结果所需的内存量将取决于矩阵的稀疏程度,并且会比原始稀疏矩阵略大。