看很多资料,很少有讲怎么去操作读写csv文件的,我也查了一些。很多博客都是很老的方法,还有好多转来转去的,复制粘贴都不能看。下面我在这里归纳一下,以免以后用到时再费时间去查.前端实现文件下载和拖拽上传

通过sc.textFile


val input = sc.textFile("test.csv")
val result = input.map { line =>
val reader = new CSVReader(new StringReader(line));
reader.readNext()
}
// 创建了RDD

确实这样操作可以读取,但是根据csv文件的格式能够发现不方便后续操作,官方也建议通过Spark SQL来操作读写csv

怎么写?顺便提一句吧rdd.toDF.write.csv(...),要引入隐式操作import spark.implicits._

通过SparkSQL读取csv文件

在 spark 1.x 中,读写csv使用了第三方库 spark-csv,由 databricks 提供。 但在 spark 2.0中,将 csv 作为一个内置的源代码。 这个决定主要是由于 csv 是企业中使用的主要数据格式之一。因此迁移到 spark 2.0时,需要将代码移动到使用构建在 csv 源代码中的代码,而不是使用第三方代码

1.x版本Spark SQL内置支持三种格式数据源:parquet(默认)、json、jdbc,所以读取csv文件需要依赖com.databricks.spark.csv


// spark是SparkSession对象
val df = spark.read
.format("com.databricks.spark.csv")
.option("header", "true") //reading the headers
.option("mode", "DROPMALFORMED")
.load("csv/file/path"); //.csv("csv/file/path") //spark 2.0 api df.show()

2.x后也内置了csv的解析器,也可以简单滴使用csv(),

val df=spark.read.format("csv").option("header", "true").option("mode", "DROPMALFORMED").csv("csv/file/path")


val spark = SparkSession.builder().appName("fileRead").getOrCreate()
import spark.implicits._
val data1 = spark.read
// 推断数据类型
.option("inferSchema", "true")
// 可设置分隔符,默认,
//.option("delimiter",",")
// 设置空值
.option("nullValue", "?")
// 表示有表头,若没有则为false
.option("header", true)
// 文件路径
.csv("test.csv")
// 打印数据格式
data1.printSchema()
// 显示数据,false参数为不要把数据截断
data1.show(false)

通过SparkSQL写csv


//1.x
data.write.format("com.databricks.spark.csv")
.option("header", "false")//在csv第一行有属性”true”,没有就是”false”
.option("delimiter",",")//默认以”,”分割
.save(outpath/test.csv)
//2.x
data.write
.option("header", "true")
.csv("outpath/test.csv")

貌似确定是否有头部那块写true或者字符串"true"都可以

可以参考 stackmirror 上这两个讨论:


发现有些网站真的是恶心,转我文章还不标准出处

来源:https://blog.csdn.net/lzw2016/article/details/85562172

Spark1.x和2.x如何读取和写入csv文件的更多相关文章

  1. python读取和写入csv文件

    读取csv文件: def readCsv(): rows=[] with file(r'E:\py\py01\Data\system.csv','rb') as f: reads=csv.reader ...

  2. python之读取和写入csv文件

    写入csv文件源码: #输出数据写入CSV文件 import csv data = [ ("Mike", "male", 24), ("Lee&quo ...

  3. python读取并写入csv文件

    在ubuntu下,新建.csv文件的方法是使用LibreOffice来创建一个数据表,然后我们把表格存储为.csv的格式: “Save as”菜单把我们的表格存为一个CSV的文件格式:命名为csvDa ...

  4. 使用OLEDB读取excel和csv文件

    这是我第一次在博客上写东西,简单的为大家分享一个oledb读取文件的功能吧,这两天在做一个文件导入数据库的小demo,就想着导入前先在页面上展示一下,之前调用Microsoft.Office.Inte ...

  5. python读取与写入csv,txt格式文件

    python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...

  6. python读取两个csv文件数据,进行查找匹配出现次数

    现有需求 表1 表2 需要拿表1中的编码去表2中的门票编码列匹配,统计出现的次数,由于表2编码列是区域间,而且列不是固定的,代码如下 #encoding:utf-8 ##导入两个CSV进行比对 imp ...

  7. python读取并写入mat文件

    用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入 ...

  8. Asp.net读取和写入txt文件方法(实例)!

    Asp.NET读取和写入txt文件方法(实例)! [程序第一行的引入命名空间文件 - 参考] System; using System.Collections; using System.Config ...

  9. PHP 读取和导出 CSV文件

    PHP 读取和导出 CSV文件,速度比phpexcel快80%,而phpexcel 占内存,在数据大的情况下,5万条只需几秒不到,几乎感觉不出来 如果遇到数字是科学计算法,可以在前面加一个 ' 单引号 ...

随机推荐

  1. socket文件权限变更引起crs无法启动故障

    Crs无法正常启动,也无法关闭.[root@rac101 ~]# crsctl stop crsStopping resources. This could take several minutes. ...

  2. [Linux 学习] Centos 图形和命令行界面切换

    要想切换图形界面和命令行界面切换, 需修改一个文件... root 下, 到 /etc/inittab 修改 id:5:initdefault Linux系统有7个运行级别(runlevel): 运行 ...

  3. JavaScript------Throw和Try-Catch的使用

    function test() { try { var x = document.getElementById("demo").value; if (x == "&quo ...

  4. 微信小程序直播

    微信小程序直播(转) 通过PC实现推流,然后用小程序进行直播播放,也就是PC->小程序. 小程序支持 小程序的直播能力只针对某些类目开放并且需要申请开通. 支持的类目 社交 直播 教育 在线教育 ...

  5. css 中的事件冒泡

    css伪类中的表现类似于事件冒泡的,举个例子,当你滑过一个元素时,他会认为你也滑过了该元素的父元素,即使该元素看起来并没有包含在父元素里面,此处以:hover例子: 效果图: 滑过前: 滑过后: CS ...

  6. HYSBZ 2160 拉拉队排练(回文树)

    2160: 拉拉队排练 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 825  Solved: 324 [Submit][Status][Discu ...

  7. phantomjs学习之网页访问测速

    1.编写loadpage2.js文件: loadpage2.js var page = require('webpage').create(), system = require('system'), ...

  8. 【论文翻译】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文链接:https://arxi ...

  9. Linux挂载:VMware tools for Linux安装

    安装VMTools [root@localhost ~]# mkdir /mnt/cdrom [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/ [roo ...

  10. 在Windows 7 64位下注册ActiveX失败的解决办法

    copy Chart10W.dll  %SystemRoot%\SysWOW64\ copy cellweb5.inf  %SystemRoot%\SysWOW64\ copy hado.dll %S ...