09_spark_core_数据读存_seq文件

08_spark_core_数据读存_text文件

Sequence文件

SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File)。在SparkContext中,可以调用sequenceFilekeyClass, valueClass
1)代码实现

package com.atguigu.readAndSave

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @author dxy
 * @date 2021/2/25 13:19
 */
object Operate_Sequence {
  def main(args: Array[String]): Unit = {
    //TODO 1.创建SparkConf并设置App名称
    val conf: SparkConf = new SparkConf().setAppName("SparkCoreTest").setMaster("local[*]")

    //TODO 2.创建SparkContext,该对象是提交Spark App的入口
    val sc: SparkContext = new SparkContext(conf)

    val strRDD: RDD[String] = sc.makeRDD(List("atguigu","zoo","hive","banana","spark","hadoop"))

    //seq文件的存储
    //strRDD.map((_,1)).coalesce(1).saveAsSequenceFile("D:\\DevelopmentTools\\spark\\SparkCoreTest1109\\seqout")

    //seq文件的读取
    val seqRDD: RDD[(String, Int)] = sc.sequenceFile("D:\\DevelopmentTools\\spark\\SparkCoreTest1109\\seqout")

    seqRDD.collect().foreach(println)

    //TODO 3.关闭连接
    sc.stop()

  }
}

运行结果
在这里插入图片描述

(atguigu,1)
(zoo,1)
(hive,1)
(banana,1)
(spark,1)
(hadoop,1)

总结

1.saveAsSequence行动算子在使用时存储K-V形式文件
2.Sequence文件读取可以使用上下文对象sc.sequenceFile[keyClass, valueClass](path)。
因此在读文件时,你要清楚你的文件K和V具体是什么类型(即当初你存储文件的时候文件K和V泛型是什么)


另外对于文件读取要灵活处理,比如:保存文件,文件内容较少可以保存在一个文件中,可以灵活使用coalesce()算子,先改分区个数
即:rdd.coalesce(1)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值