我正尝试使用sparklyr将大型data.table
上传到Spark中,如下所示:
copy_to(sc, obj, "name_of_object")
其中sc
是一个Spark连接,obj
是我的对象。经过一番挖掘之后,我发现将表写入Spark的步骤如下(在spark_data_copy()
中):使用序列化程序spark_serialize_csv_scala
在磁盘上创建了一个csv文件,该序列化程序使用基数R write.table()
。写入文件后,R指示Spark读取csv。
我发现这对于我的使用而言不是很有效,R似乎挂起了,并且只能对csv编写任务的一部分进行太多的调整。是否存在将R内存中已有的数据放入Spark中的有效方法?
答案 0 :(得分:0)
一种解决方案是使用data.table的fwrite()
编写一个csv,然后使用spark_read_csv()
导入一个csv。这样可以提高两个速度:
fwrite
比write.table()
spark_read_csv()
的速度也快得多,像这样运行,本地Spark实例将使用所有内核(也许会有更多差异)。对我来说,在一台真正有用的16核计算机上。如果有时间,我会进行更精确的测量。