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

时间:2017-07-05 14:33:01

标签: r apache-spark sparklyr

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

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

  

as.data.frame.default(x [[i]],可选= TRUE)出错:         不能强制类“”integer64“”到data.frame

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

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

  

invoke_method.spark_shell_connection中的错误(sc,TRUE,类,方法,:         没有返回状态。 Spark R后端可能失败了。

没有数据被复制到Spark。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我遇到过这种情况。不幸的是,将数据帧从内存复制到Sparklyr并不是导入更大数据的最佳方法。当我将数据帧作为.csv保存到磁盘然后将其直接读入Spark时,它可以更好地贯穿始终。

为了获得最佳性能,这些最好的方法是将其保存到磁盘上的镶木地板格式并阅读。因为Spark使用DAG,如果你有一个更高效的磁盘数据格式供Spark进行操作,当你点击collect,insert或whathaveyou时,你的整个Spark操作会更快。