r语言 - Sparklyr语言 - 无法使用 copy_to 将 data.frame 复制到 Spark 中



我正在尝试使用 Sparklyr 的函数将一个大dataframe(大约 580 万条记录(复制到 Spark 中copy_to.

首先,当使用fread(data.table( 加载数据并应用copy_to函数时,我得到以下输出错误:

as.data.frame.default(x[[i]], optional = TRUE( 中的错误: 无法将类"integer64"强制到数据帧

然后,我将仅有的两列类型integer64更改为character,然后将as.data.frame(这是一个data.table,因为我使用了fread(应用于所有数据。

再次使用copy_to,在进度条显示之前和之后需要很长时间,但返回以下结果:

invoke_method.spark_shell_connection(sc, TRUE, class, method, : 不返回任何状态。Spark R 后端可能已失败。

不会将任何数据复制到 Spark 中。

有什么想法吗?

我遇到了这个。不幸的是,将数据帧从内存复制到Sparklyr并不是导入更大数据的最佳方式。当我将数据帧作为.csv保存到磁盘,然后直接将其读取到 Spark 中时,它的效果会更好。

为了获得最佳性能,最好的办法是将其保存为磁盘上的镶木地板格式并读取。由于 Spark 使用 DAG 工作,因此,如果您具有更高效的磁盘数据格式供 Spark 执行操作,则当您点击收集、插入或其他操作时,整个 Spark 操作将更快。

最新更新