我有一个Spark数据框,我知道,适合在内存中。我想生成一个csv表示为字符串的驱动程序。
val df = // Some DataFrame
val csv = // String Representation
我知道我能做到
df.repartition(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("/your/location/mydata")
然而,这会将csv文件保存到磁盘上,作为给定文件夹中的一些随机文件名。有没有办法,不将数据写入文件,而是将其作为字符串或其他表示形式获取?
2条答案
按热度按时间jhkqcmku1#
有几种方法......也许最简单的方法是转换到Pandas Dataframe 并使用它编写CSV
df.toPandas().to_csv()
在不依赖Pandas但依赖于Databricks
dbutils
的Databricks中也可以看到这种方式,后者在文件写入后基本上会移动并重命名文件。可以使用其他库实现,如AWS S3的boto3或其他存储技术的类似库,798qvoo82#
下面的解可以给予
String
表示的数据从DataFrame
,但可能不会给出确切的解决方案,你正在寻找。从Dataframe获取字符串表示数据
使用
map
方法从Dataframe获取Row
并转换为case类或使用tuple值使用
collect
方法并使用mkString()
将其转换为String