spark檔案讀取與儲存(scala實現)

2022-09-11 14:18:20 字數 1657 閱讀 8932

將乙個文字檔案讀取為rdd時,輸入的每一行都會成為rdd的乙個元素。也可以將多個完整的文字檔案一次性讀取為乙個pairrdd, 其中鍵是檔名,值是檔案內容。

// 讀取文字檔案

val input = sc.textfile("filepath")

// 儲存為文字檔案

result.s**aastextfile(outputfile)

讀取json最簡單的方法是將資料作為文字檔案讀取,然後使用json解析器來對rdd中的值進行對映操作。json的使用需要依賴第三方類庫,scala中可以使用jackson。

import

com.fasterxml.jackson.module.scala.defaultscalamodule

import

import

import

com.fasterxml.jackson.databind.deserializationfeature

...case

class person(name: string, lovespandas: boolean) //

must be a top-level class

...//

parse it into a specific case class. we use flatmap to handle errors

//by returning an empty list (none) if we encounter an issue and a

//list with one element if everything is ok (some(_)).

val result = input.flatmap(record =>

catch

})

儲存成json。

.s**eastextfile(outputfile)

也可以使用spark sql讀取json。

val input = hivecontext.jsonfile(inputfile)

讀取csv/tsv資料與json類似,都需要先作為普通文本來讀取資料,再對資料進行處理。與json一樣,csv也有很多庫,scala中可以使用opencsv。

import

j**a.io.stringreader

import

au.com.bytecode.opencsv.csvreader

...val input =sc.textfile(inputfile)

val result = input.map

// 讀取sequencefile

val data =sc.sequencefile(infile, classof[text], classof[intwritable]).

map// 儲存成sequencefile

val data = sc.parallelize(list(("a",1),("b",2),("c",3)))

data.s**eassequencefile(outputfile)

//

dataframe儲存成csv檔案

dataframe.write.format("csv").s**e("path")

Spark讀取檔案

spark預設讀取的是hdfs上的檔案。如果讀取本地檔案,則需要加file usr local spark readme.md。測試時候發現,本地檔案必須在spark的安裝路徑內部或者平行 讀取hdfs檔案,可以這樣指定路徑 hdfs ns1 tmp test.txt。如果不指定任何字首,則使用hd...

Spark讀取檔案

spark預設讀取的是hdfs上的檔案。如果讀取本地檔案,則需要加file usr local spark readme.md。測試時候發現,本地檔案必須在spark的安裝路徑內部或者平行 讀取hdfs檔案,可以這樣指定路徑 hdfs ns1 tmp test.txt。如果不指定任何字首,則使用hd...

檔案讀取與儲存

pandas的api支援眾多的檔案格式,如csv sql xls json hdf5。讀取檔案,並且指定只獲取 open close 指標 data pd.read csv data stock day.csv usecols open close hdf5hdf5檔案的讀取和儲存需要指定乙個鍵,值...