前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark学习之RDD编程(2)

Spark学习之RDD编程(2)

作者头像
王小雷
发布2018-01-02 14:25:22
7910
发布2018-01-02 14:25:22
举报
文章被收录于专栏:王小雷

Spark学习之RDD编程(2)

1. Spark中的RDD是一个不可变的分布式对象集合。

2. 在Spark中数据的操作不外乎创建RDD、转化已有的RDD以及调用RDD操作进行求值。

3. 创建RDD:1)读取一个外部数据集2)在驱动器程序里分发驱动器程序中的对象集合。

4. RDD支持的操作:

代码语言:javascript
复制
1)转换操作,由一个RDD生成一个新的RDD。
2)行动操作,对RDD进行计算结果,并把结果返回到驱动器程序中,或者把结果存储到外部存储系统(如HDFS)。

5. Spark程序或者shell会话都会按如下方式工作:

代码语言:javascript
复制
1)从外部数据创建出输入RDD。
2)使用诸如filter()这样的转化操作对RDD进行转化,以定义一个新的RDD。
3)告诉Spark对需要被重用的中间结果RDD执行persist()操作。
4)使用行动操作 (例如count()和first()等)来触发一次并行计算,Spark会对计算进行优化后在执行。

6. 创建RDD

代码语言:javascript
复制
快速创建RDD,把程序中一个已有的集合传给SparkContext的parallelize()方法,不过这种方法除了开发原型和测试时,这种方式用的并不多。
Python中的parallelize()方法
代码语言:javascript
复制
    lines = sc.parallelize(["pandas","i like pandas"])
代码语言:javascript
复制
Scala中的parallelize()方法
代码语言:javascript
复制
    val lines = sc.parallelize(List("pandas","i like pandas"))
代码语言:javascript
复制
Java中的parallelize()方法
代码语言:javascript
复制
    JavaRDD<String> lines = sc.parallelize(Arrays.asList("pandas","i like pandas"))

7. 惰性求值

代码语言:javascript
复制
RDD的转化操作都是惰性求值的。

8. 向Spark传递函数

代码语言:javascript
复制
8.1 Python
传递比较短的函数,使用lambda表达式来传递;也可以传递顶层函数或是定义的局部函数。
8.2 Scala,可以定义的内联函数、方法的引用或静态方法传递给Spark,就行Scala的其他函数式API一样。
8.3 Java,函数需要作为实现了Spark的org.apache.spark.api.java.function包中的任一函数接口的对象来传递。

9. 常见的转化操作和行动操作

代码语言:javascript
复制
9.1 针对个元素的转化操作
flatmap()       对每个输入元素生成多个输出元素。
map()           接受一个函数,把这个函数用于RDD中的每个元素,将函数的返回结果作为结果RDD中的对应元素的。返回的类型不必和输入类型相同。
filter()        接受一个函数,并将RDD中满足该函数的元素放入新RDD中返回。
distinct()      去重
sample(withReplacement,fraction,[seed])         对RDD采样,以及是否替换
9.2 伪集合操作
合并和相交要求RDD数据类型相同。
(不需混洗)union()           生成一个包含两个RDD中所有元素的RDD
(需要混洗)intersection()    求两个RDD共同的元素的RDD
(需要混洗)subtract()        移除一个RDD中的内容
(需要混洗)cartesian)()      与另一个RDD的笛卡尔积
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spark学习之RDD编程(2)
    • 1. Spark中的RDD是一个不可变的分布式对象集合。
      • 2. 在Spark中数据的操作不外乎创建RDD、转化已有的RDD以及调用RDD操作进行求值。
        • 3. 创建RDD:1)读取一个外部数据集2)在驱动器程序里分发驱动器程序中的对象集合。
          • 4. RDD支持的操作:
            • 5. Spark程序或者shell会话都会按如下方式工作:
              • 6. 创建RDD
                • 7. 惰性求值
                  • 8. 向Spark传递函数
                    • 9. 常见的转化操作和行动操作
                    相关产品与服务
                    GPU 云服务器
                    GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档