Spark1.x和2.x如何读取和写入csv文件
看很多资料,很少有讲怎么去操作读写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文件的更多相关文章
- python读取和写入csv文件
读取csv文件: def readCsv(): rows=[] with file(r'E:\py\py01\Data\system.csv','rb') as f: reads=csv.reader ...
- python之读取和写入csv文件
写入csv文件源码: #输出数据写入CSV文件 import csv data = [ ("Mike", "male", 24), ("Lee&quo ...
- python读取并写入csv文件
在ubuntu下,新建.csv文件的方法是使用LibreOffice来创建一个数据表,然后我们把表格存储为.csv的格式: “Save as”菜单把我们的表格存为一个CSV的文件格式:命名为csvDa ...
- 使用OLEDB读取excel和csv文件
这是我第一次在博客上写东西,简单的为大家分享一个oledb读取文件的功能吧,这两天在做一个文件导入数据库的小demo,就想着导入前先在页面上展示一下,之前调用Microsoft.Office.Inte ...
- python读取与写入csv,txt格式文件
python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...
- python读取两个csv文件数据,进行查找匹配出现次数
现有需求 表1 表2 需要拿表1中的编码去表2中的门票编码列匹配,统计出现的次数,由于表2编码列是区域间,而且列不是固定的,代码如下 #encoding:utf-8 ##导入两个CSV进行比对 imp ...
- python读取并写入mat文件
用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入 ...
- Asp.net读取和写入txt文件方法(实例)!
Asp.NET读取和写入txt文件方法(实例)! [程序第一行的引入命名空间文件 - 参考] System; using System.Collections; using System.Config ...
- PHP 读取和导出 CSV文件
PHP 读取和导出 CSV文件,速度比phpexcel快80%,而phpexcel 占内存,在数据大的情况下,5万条只需几秒不到,几乎感觉不出来 如果遇到数字是科学计算法,可以在前面加一个 ' 单引号 ...
随机推荐
- oauth 2
OAuth2是基于HTTP的认证API,一般与OAuth2搭配的API也是基于HTTP的REST风格API(比如新浪微博和github),很多人一定想过是否可以直接从浏览器端调用REST API. 我 ...
- (1)、hive框架搭建和架构简介
一.简介 Hive是基于hadoop的一个数据仓库工具,有助于查询和管理分布式存储系统中的数据集,非常适合数据仓库的统计分析 Hive 不适合用于连机事物处理.也不提供实时查询,比较适合在大量不可变数 ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.2——使用Android Testing Support Library进行测试
问题: 你想要测试app的Android组件. 解决方案: 使用新的测试类实现JUnit风格的测试. 讨论: 测试像activities,services等的Android组件,需要将app部署到连接 ...
- Django设置中文,和时区、静态文件指向
#========================================================== # 设置时区 注意注释上面的:LANGUAGE_CODE.TIME_ZONE.U ...
- Taylor's theorem
w https://en.wikipedia.org/wiki/Taylor_series
- Spring 框架的核心功能之AOP技术
1. AOP 的概述 AOP, Aspect Oriented Programming, 面向切面编程; 通过预编译方式和运行期动态代理实现程序功能的统一维护的技术; AOP 采取横向抽取机制,取代了 ...
- DOM 综合练习(一)
// 练习一: 完成一个好友列表的展开闭合效果 <html> <head> <style type="text/css"> // 对表格中的 u ...
- jQuery EasyUI 简介
简介 jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件. 特点: ①easyui 是一个基于 jQuery 的框架,集成了各种用户界面插件. ②easyui 提供建 ...
- Oracle 11g修改字符集AL32UTF8为ZHS16GBK
oracle11g更改字符集AL32UTF8为ZHS16GBK当初安装oracle的时候选择的默认安装,结果字符集不是以前经常用的16GBK,要改字符集,从网上找到了方法并试了一下,果然好用! 具体如 ...
- Python 去掉文本中空行
pandas 操作csv文件时,一直报错,排查后发现csv文本中存在很多“空行”: So 需要把空行全部去掉: def clearBlankLine(): file1 = open('text1.tx ...