• 1.3RDD的设计与运行原理


    此文为个人学习笔记如需系统学习请访问http://dblab.xmu.edu.cn/blog/1709-2/

    提供一种通用的数据抽象

    RDD典型的执行过程如下:

    1. RDD读入外部数据源(或者内存中的集合)进行创建;
    2. RDD经过一系列的“转换”操作,每一次都会产生不同的RDD,供给下一个“转换”使用;
    3. 最后一个RDD经“行动”操作进行处理,并输出到外部数据源(或者变成Scala集合或标量)。

    概念好难   笨      环境安装https://mp.csdn.net/postedit/82709116

    例1:一个Spark的“Hello World”程序

    这里以一个“Hello World”入门级Spark程序来解释RDD执行过程,这个程序的功能是读取一个HDFS文件,计算出包含字符串“Hello World”的行数。

    fileRDD = sc.textFile('hdfs://localhost:9000/test.txt')
    def contains(line):
    ...     return 'hello world' in line
    filterRDD = fileRDD.filter(contains)
    filterRDD.cache()
    filterRDD.count()

    第1行代码从HDFS文件中读取数据创建一个RDD;第2、3行定义一个过滤函数;第4行代码对fileRDD进行转换操作得到一个新的RDD,即filterRDD;第5行代码表示对filterRDD进行持久化,把它保存在内存或磁盘中(这里采用cache接口把数据集保存在内存中),方便后续重复使用,当数据被反复访问时(比如查询一些热点数据,或者运行迭代算法),这是非常有用的,而且通过cache()可以缓存非常大的数据集,支持跨越几十甚至上百个节点;第5行代码中的count()是一个行动操作,用于计算一个RDD集合中包含的元素个数。这个程序的执行过程如下:这个程序的执行过程如下:
    *  创建这个Spark程序的执行上下文,即创建SparkContext对象;
    *  从外部数据源(即HDFS文件)中读取数据创建fileRDD对象;
    *  构建起fileRDD和filterRDD之间的依赖关系,形成DAG图,这时候并没有发生真正的计算,只是记录转换的轨迹;
    *  执行到第6行代码时,count()是一个行动类型的操作,触发真正的计算,开始实际执行从fileRDD到filterRDD的转换操作,并把结果持久化到内存中,最后计算出filterRDD中包含的元素个数。

  • 相关阅读:
    带有参数的存储过程
    不实用数据库实现保存和查询功能
    http错误代码(快速了解错误所在)
    ListBox的应用(左边中的信息移至右边)
    省市县三级连动(数据在一个表中)
    简单的实现用户注册时,向其油箱发送激活码邮件,并进行状态处理。 .
    省级三连动(二)
    省市选择期三级联动
    百钱百鸡
    MySQL命令简单应用
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232630.html
Copyright © 2020-2023  润新知