【Spark】如何将spark中DataFrame的内容保存到一个或多个csv文件 | 您所在的位置:网站首页 › dataframe存储数据库 › 【Spark】如何将spark中DataFrame的内容保存到一个或多个csv文件 |
一、问题背景
原本我是想利用spark处理大量的数据集来训练Lr模型,然后需要提取数据集中的标签索引,然后我就想将标签的索引保存成csv格式的数据,再直接导入到hive表中。 这里我们需要得到csv格式的数据,首先我想到可以先创建成dataframe格式的数据==>再转换成csv格式数据。 二、解决方案经过我的一系列变换,将我所需要的数据都存储到了ListBuffer的数组中,然后直接利用createDataFrame来创建df数据,代码如下: import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.SQLContext import scala.collection.mutable.ListBuffer val sqlContext = new SQLContext(sc) import sqlContext.implicits._ var list = ListBuffer(("a", 1, 0),…,("z", 5, 99)) val df = sqlContext.createDataFrame(list).toDF("class", "key", "index") // 创建一个dataframe类型的数据这样我们就把我们的数据变成了DataFrame格式,接下来就是找转csv格式数据的方法,我这里参考了一下: http://cn.voidcc.com/question/p-wygpwrof-boe.html DataFrame转csv: 方法一: df.write.format("com.databricks.spark.csv").option("header", "true") save("myFile.csv")上述方法,用了save的方法,csv方法就是save方法的一种封装,对比如下,然后会产生一个myFile.csv的文件夹,该文件夹的命名也可以不用.csv结尾,同时其中的数据会保存成多个csv文件。 save方法csv方法方法二: df.coalesce(1).write.option("header", "true").csv("myFile.csv")这里便使用了csv方法,同样会产生一个myFile.csv的文件夹,但其中的数据会全部保存到单个csv文件中,这里主要是coalesce(1)来将DF合并,然后才会保存到一个csv文件中。 上述最终的结果产生了多个文件(有利于分布式)或是单个文件,各自有各自的优势,看自己目前的需要各取所需啦! |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |