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

本文介绍了如何使用Spark处理大规模数据集,训练Lr模型,并将标签索引保存为CSV文件。通过创建DataFrame并转换为CSV格式,可以选择保存为单个文件或分布式文件。方法一是使用`save`方法,生成多个文件;方法二是结合`coalesce(1)`,将数据合并到一个CSV文件中。最后,这些CSV数据可导入Hive表进行进一步分析。
摘要由CSDN通过智能技术生成
一、问题背景

  原本我是想利用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文件中。

  上述最终的结果产生了多个文件(有利于分布式)或是单个文件,各自有各自的优势,看自己目前的需要各取所需啦!

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值