栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark-----RDD编程

Spark-----RDD编程

RDD(Risilient Distributed  DataSets)  弹性分布式数据集

它是一个只读的,可分区的分布式数据集,这个数据集的全部或者部分缓存在内存中,可以多次计算和复用。

Scala语法:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/120549893

一、RDD基础

(一)RDD创建方式

  加载文件

   1.从本地文件系统中加载文件

   val textfilelocal=sc.textFile("file://usr/README.md")

   

   2.从分布式文件系统hdfs中加载

   val  textfile=sc.textFile("/user/root/README.md")

  上面的sc是Spark context的一个对象

上面的textfile和textfilelocal就是RDD对象。 

官网案例:RDD Programming Guide - Spark 3.1.2 documentation

 通过并行集合

    1.数组

 array是一个数组名字,Array是一个数组

通过sc调用parallelize方法得到的arrayRdd是一个RDD对象

    2.列表

list是一个List类的对象

listRdd是一个RDD对象

  (二)RDD操作(转化和动作)

     1.转化:只会对RDD对象转换进行轨迹记录,不会做真正的计算,仍然会返回RDD对象

             filter(func):对RDD对象内的数据进行过滤筛选

                

foreach是对行进行循环遍历,println()  是换行输出

             map(func)

对arrayRdd里的元素分别+3   然后循环输出

             flatMap(func)

 从上面的输出结果可以看出,flatMap的作用就是根据传入参数的处理结果查分开了

splite(" ")的作用就是把

  "Hadoop is good"  转变成   字符串数组    Array("Hadoop","is","good")

"Spark is good"  转变成   字符串数组    Array("Spark ","is","good")

"Hbase is very good"  转变成   字符串数组    Array("Hbase ","is","very","good")

然后再被压扁合成一个Rdd ,每一个单词元素都是一个Rdd里的行元素

             groupByKey(func) :应用于(K,V)键值对的数据集时,返回一个新的(K,Iterable)形式的数据集。按照key进行分组,可以相同的就把相同key的值合并成一组

             reduceByKey(func):应用于(K,V)键值对的数据集时,返回一个新的(K,V)的数据集,其中的value是将key传递到函数func中进行聚合(给定义一种算法,比如把这些值相加或者其他处理)得到的结果

      2.动作(计算)

               count()

                collect()

                first()

                take(n)

                reduce(func)

                foreach(func)

惰性机制 是指  整个转换过程中只是记录了转换的轨迹,并没有发生 真正的计算,也即是只有执行  “动作”时才会计算

     (三)、持久化

         可以通过“持久化(缓存)”机制来避免这种重复计算的开销,具体做法就是调用persist()方法对一个RDD标记为持久化,但是调用该方法时并不会立即计算生成RDD并把它持久化,而是调用persist()后遇到第一次计算以后,把计算结果持久化,

      持久化后的RDD将会被保留在计算机节点的内存中,被后面的行动操作重复使用。

     持久化级别:

        MEMORY_onLY :将RDD作为反序列化的对象存储于JVM中,内存不足时按照LRU原则替换缓存内容

        MEMORY_AND_DISK:将RDD作为反序列化的对象存储于JVM中,内存不足时超出部分的分区持久化的硬盘

     

        

     (四)、分区

 二、键值对RDD

         (一) 键值对RDD的创建

          (二) 常用键值对转换

三、数据读写

        (一)文件数据读写

           1.本地文件系统的读写

                    1.1 从文件中读取数据创建RDD

                     1.2 把RDD写入到文件文本

            2.分布式文件系统HDFS的读写

                     2.1 从分布式系统HDFS读取文件创建RDD

                     2.2 把RDD写入HDFS系统

             3.JSON文件的读取

        (二)读写Hbase数据

                  编写前需要先安装和配置Hbase,参考

               1.创建一个Hbase表

                2.配置Spark

                3.编写程序读取Hbase数据

                4.编写向Hbase写入数据的程序

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282849.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号