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

标签 r apache-spark sparklyr

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

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

Error in as.data.frame.default(x[[i]], optional = TRUE) : cannot coerce class ""integer64"" to a data.frame

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

再次使用copy_to,进度条出现前后花了很长时间,但返回结果如下:

Error in invoke_method.spark_shell_connection(sc, TRUE, class, method, : No status is returned. Spark R backend might have failed.

没有数据复制到 Spark。

有什么想法吗?

最佳答案

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

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

关于r - Sparklyr - 无法使用 copy_to 将 data.frames 复制到 Spark 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44929151/

相关文章:

r - 如何按特定组和频率顺序对条形图重新分组

r - sparklyr 中的 sdf_pivot 可以使用哪些聚合函数?

scala - 在 Scala 中从数据框中添加两列

r - 为什么我需要在 Spark 中缩放之前组装矢量?

hadoop - Hive:如何转换毫秒时间戳?

r - 有没有办法连接基于数字向量的向量字符串?

r - 如何在ggraph R中翻转x轴和y轴

r - 有没有更高效的搜索算法

elasticsearch - sbt 无法解析来自 sonatype 快照的依赖关系

hadoop - 如何从不同主机外部访问在docker容器(覆盖)中运行的服务