首页 > 技术文章 > Spark基础:(四)Spark 数据读取与保存

tongxupeng 2018-08-04 21:51 原文

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/目录下

还有其他的

推荐阅读