【Spark】如何将spark中DataFrame的内容保存到一个或多个csv文件 您所在的位置:网站首页 dataframe存储数据库 【Spark】如何将spark中DataFrame的内容保存到一个或多个csv文件

【Spark】如何将spark中DataFrame的内容保存到一个或多个csv文件

2023-07-19 17:25| 来源: 网络整理| 查看: 265

一、问题背景

  原本我是想利用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 实验室设备网 版权所有