日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Spark1.x和2.x如何读取和写入csv文件

發(fā)布時(shí)間:2024/4/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark1.x和2.x如何读取和写入csv文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

看很多資料,很少有講怎么去操作讀寫csv文件的,我也查了一些。很多博客都是很老的方法,還有好多轉(zhuǎn)來(lái)轉(zhuǎn)去的,復(fù)制粘貼都不能看。下面我在這里歸納一下,以免以后用到時(shí)再費(fèi)時(shí)間去查.前端實(shí)現(xiàn)文件下載和拖拽上傳

通過(guò)sc.textFile

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

確實(shí)這樣操作可以讀取,但是根據(jù)csv文件的格式能夠發(fā)現(xiàn)不方便后續(xù)操作,官方也建議通過(guò)Spark SQL來(lái)操作讀寫csv

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

通過(guò)SparkSQL讀取csv文件

在 spark 1.x 中,讀寫csv使用了第三方庫(kù) spark-csv,由 databricks 提供。 但在 spark 2.0中,將 csv 作為一個(gè)內(nèi)置的源代碼。 這個(gè)決定主要是由于 csv 是企業(yè)中使用的主要數(shù)據(jù)格式之一。因此遷移到 spark 2.0時(shí),需要將代碼移動(dòng)到使用構(gòu)建在 csv 源代碼中的代碼,而不是使用第三方代碼

1.x版本Spark SQL內(nèi)置支持三種格式數(shù)據(jù)源:parquet(默認(rèn))、json、jdbc,所以讀取csv文件需要依賴com.databricks.spark.csv

// spark是SparkSession對(duì)象 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 apidf.show()

2.x后也內(nèi)置了csv的解析器,也可以簡(jiǎn)單滴使用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// 推斷數(shù)據(jù)類型.option("inferSchema", "true")// 可設(shè)置分隔符,默認(rèn),//.option("delimiter",",")// 設(shè)置空值.option("nullValue", "?")// 表示有表頭,若沒(méi)有則為false.option("header", true)// 文件路徑.csv("test.csv")// 打印數(shù)據(jù)格式data1.printSchema()// 顯示數(shù)據(jù),false參數(shù)為不要把數(shù)據(jù)截?cái)郿ata1.show(false)

通過(guò)SparkSQL寫csv

//1.x data.write.format("com.databricks.spark.csv").option("header", "false")//在csv第一行有屬性”true”,沒(méi)有就是”false”.option("delimiter",",")//默認(rèn)以”,”分割.save(outpath/test.csv) //2.x data.write.option("header", "true").csv("outpath/test.csv")

貌似確定是否有頭部那塊寫true或者字符串"true"都可以

可以參考 stackmirror 上這兩個(gè)討論:

  • Write single CSV file using spark-csv
  • How to export data from Spark SQL to CSV

發(fā)現(xiàn)有些網(wǎng)站真的是惡心,轉(zhuǎn)我文章還不標(biāo)準(zhǔn)出處

來(lái)源:https://blog.csdn.net/lzw2016/article/details/85562172

轉(zhuǎn)載于:https://www.cnblogs.com/qixidi/p/10229242.html

總結(jié)

以上是生活随笔為你收集整理的Spark1.x和2.x如何读取和写入csv文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。