首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Sparkr和Rstudio时,如何使用write.df存储csv文件?

使用Sparkr和Rstudio时,如何使用write.df存储csv文件?
EN

Stack Overflow用户
提问于 2016-05-23 14:25:16
回答 1查看 1.4K关注 0票数 1

我在学习Sparkr。我有一个csv文件:

代码语言:javascript
运行
复制
a <- read.df(sqlContext,"./mine/a2014.csv","csv")

我想使用write.df来存储这个文件。但是,当我使用:

代码语言:javascript
运行
复制
write.df(a,"mine/a.csv")

我得到一个名为a.csv的文件夹,其中根本没有csv文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-24 15:01:20

将数据划分为块,这样就可以将这些分区分布在集群中的节点上。在写入数据时,它保留此分区:它创建一个目录并将每个分区写入一个单独的文件。这样,它可以更好地利用分布式文件系统(将每个块与HDFS/S3并行编写),并且不必将所有数据收集到一台可能无法处理数据量的单一机器上。

长名称的两个文件是数据的两个分区,并保存实际的CSV数据。您可以通过复制它们、用.csv扩展重命名副本并双击它们或使用类似于head longfilename的内容来看到这一点。

您可以通过尝试将其读入:为Spark提供目录的路径,并通过您提到的元数据和_SUCCESS文件将其识别为分区文件,从而测试写入是否成功。

如果确实需要一个文件中的所有数据,可以使用repartition将分区数量减少到1,然后编写:

代码语言:javascript
运行
复制
b <- repartition(a, 1)
write.df(b,"mine/b.csv")

这只会导致一个长名文件,它是一个包含所有数据的CSV文件。

(我不使用未经测试的SparkR;在Scala/PySpark中,您更愿意使用coalesce而不是repartition,但我找不到一个等价的SparkR函数)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37393648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档