Spark基礎:(四)Spark 數據讀取與保存


1、文件格式

Spark對很多種文件格式的讀取和保存方式都很簡單。
(1)文本文件
讀取:
將一個文本文件讀取為一個RDD時,輸入的每一行都將成為RDD的一個元素。

val input=sc.textFile("...")

也可以將多個完整的文本文件讀取為一個pair RDD,其中鍵為文件名,值是文件內容。
例如:

val input=sc.whoTextFiles("...")

保存:

resulet.saveAsTextFile(outputfile)

(2)JSON
讀取:
json是一種半結構化的數據格式,首先是可以像上述的文本文件一樣來讀取,然后進行解析。
在python中:

import json
data=input.map(lambda x: json.loads(x))

在scala中

 rdd=spark.read.json("...")

保存:

result=result.map(mapper.writeValueAsString(_))

(3)CSV文件

scala讀取

import org.apache.spark.{SparkConf, SparkContext}
import java.io.StringReader

 val input = sc.textFile("...")
    input.foreach(println)
    val result = input.map{
      line =>
        val reader = new CSVReader(new StringReader(line))
        reader.readNext()
    }

scala保存

case class Person{name:String, fa:String}

val input=sc.whoTextFiles("...")
val result=input.flatMap(case (_,txt)=>
val reader=new CSVReader(new StringReader(txt));
reader.readAll().map(x=>Person(x(0),x(1)))
)

2、文件壓縮

在大數據中,需要對數據進行壓縮以節省存儲空間和減少網絡傳輸開銷。 對大多數Hadoop輸出格式來說,可指定一種壓縮編解碼器來壓縮數據。 讀壓縮數據時,一些壓縮編解碼器可以推測壓縮類型Spark(基於Hadoop神生態構建)原生的輸入方式textFile和sequenceFile可自動處理一些類型壓縮
這里寫圖片描述

3、文件系統

(1)HDFS
在Spark中使用HDFS 只要將輸入路徑指定為: hdfs://master:port/path 就好了

(2)Hive文件
要將hive-site.xml文件復制到Spark的../conf/目錄下

還有其他的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM