RDD创建

1.从文件系统中加载数据创建RDD

2.从分布式文件系统HDFS中加载数据

3.通过并行集合(数组)创建RDD

RDD操作

1.转换操作

filter(func)

map(func)

flatmap(func)

groupByKey()

reduceByKey(func)

2.行动操作

3.惰性机制

所谓的惰性机制是指,整个转换过程只是记录了转换的轨迹,并不会发生真正的计算,只有遇到行动操作时,才会触发从头到尾的真正的计算。这里给出一段简单的语句来解释Spark的惰性机制。

分区

1创建RDD时手动指定分区个数

在调用textFile()和parallelize()方法的时候手动指定分区个数即可,语法格式如下:

sc.textFile(path, partitionNum)

其中,path参数用于指定要加载的文件的地址,partitionNum参数用于指定分区个数。

2使用reparititon方法重新设置分区个数

自定义分区方法

实例:根据key值的最后一位数字,写到不同的文件

例如:

10写入到part-00000

11写入到part-00001

.

.

19写入到part-00009

import org.apache.spark.{Partitioner, SparkContext, SparkConf}
//自定义分区类,需要继承org.apache.spark.Partitioner类
class MyPartitioner(numParts:Int) extends Partitioner{//覆盖分区数override def numPartitions: Int = numParts //覆盖分区号获取函数override def getPartition(key: Any): Int = {key.toString.toInt%10
}
}
object TestPartitioner {def main(args: Array[String]) {val conf=new SparkConf()val sc=new SparkContext(conf)//模拟5个分区的数据val data=sc.parallelize(1 to 10,5)//根据尾号转变为10个分区,分别写到10个文件data.map((_,1)).partitionBy(new MyPartitioner(10)).map(_._1).saveAsTextFile("file:///usr/local/spark/mycode/rdd/partitioner")}
} 

注意:这里的partitioner不需要自己提前创建好,否则会运行不成功。

sbt编译打包,spark-submit提交执行

一个综合实例

假设有一个本地文件word.txt,里面包含了很多行文本,每行文本由多个单词构成,单词之间用空格分隔。可以使用如下语句进行词频统计(即统计每个单词出现的次数):

scala> val  lines = sc.         //代码一行放不下,可以在圆点后回车,在下行继续输入
|  textFile("file:///usr/local/spark/mycode/wordcount/word.txt")
scala> val wordCount = lines.flatMap(line => line.split(" ")).
|  map(word => (word, 1)).reduceByKey((a, b) => a + b)
scala> wordCount.collect()
scala> wordCount.foreach(println)

spark编程基础--5.1RDD编程基础相关推荐

  1. Spark广播变量实现原理及基础编程

    Spark广播变量实现原理及基础编程 实现原理 广播变量用来高效分发较大的对象.向所有工作节点发送一个较大的只读值,以供一个或多个 Spark 操作使用.比如,如果你的应用需要向所有节点发送一个较大的 ...

  2. Scala 编程基础 C(函数式编程)

    文章目录 1. 函数定义和高阶函数 2. 针对集合的操作 3. 函数式编程实例:WordCount 1. 函数定义和高阶函数 Scala是一门多范式编程语言,混合了面向对象编程和函数式编程的风格.在过 ...

  3. 【组队学习】【34期】零基础学python编程思维

    零基础学python编程思维 航路开辟者:邓林权 领航员:沈一 航海士:覃嘉俊.马子阳.左凯文 基本信息 开源内容:https://linklearner.com/datawhale-homepage ...

  4. 学习python需要什么基础-要学Python编程,需要什么样的基础呢?想找这方面工作...

    原标题:要学Python编程,需要什么样的基础呢?想找这方面工作 作为一个初学Python的新手,如何学好这门语言,肯定经常是一头雾水. 那么,学好这门编程语言的基础是什么呢? 第一步,就是马上到网站 ...

  5. python 计算机程序设计基础-零基础,没有编程和计算机基础,究竟该怎么自学python?...

    推荐两本适合小白的python书籍,希望能对你有所帮助. <python编程从入门到实践> /> 本书是一本针对所有层次的Python 读者而作的Python 入门书.全书分两部分: ...

  6. 怎么自学python编程-零基础如何自学编程?

    原标题:零基础如何自学编程? 对于所有编程学习者,尤其是零基础的同学们,在学习的初期,一定要给自己做一个思想上的转在我的编程学习理论中,这个思想的转变至关重要,什么时候你把这个思维转换过来了,你就是真 ...

  7. python编程零基础-如何零基础入门Python编程?

    Python目前已经成为最受欢迎的编程语言之一,吸引了一大批粉丝,但是很多人在要跨入的时候犹豫了,原因竟然是觉得零基础学习Python太难了,真的是这样吗?零基础入门Python编程学习有什么好的技巧 ...

  8. 0基础学python看什么书-零基础学python编程需要看什么书?

    原标题:零基础学python编程需要看什么书? 随着互联网迅速发展,python也呈现出水涨船高的态势.近年来,python在编程语言中一直名列前茅.编程初学者纷纷选择Python作为第一语言.Pyt ...

  9. 0基础学python编程难吗-对于0基础的人,直接学Python编程合适吗?

    原标题:对于0基础的人,直接学Python编程合适吗? 随着人工智能行业的火热,Python语言引起独有的优势成为人工智能行业编程语言的首选,一时间受到大家的追捧,已经有越来越多的人选择从零开始学习, ...

最新文章

  1. 多线程、多进程、互斥锁
  2. oracle之数据处理之视图练习
  3. iOS AFN监听网络状态
  4. 第七章 线程的调度、优先级和亲缘性(4)
  5. Python_collections_Counter计数器部分功能介绍
  6. java标签组件命名_java编程规范之java命名规范
  7. Visual Studio Code 使用Git进行版本控制
  8. C语言系列(二):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序...
  9. Python拷贝(深拷贝deepcopy与浅拷贝copy)
  10. es6 字符串 对象 拓展 及 less 的语法
  11. Matlab中fsolve传递系数变量
  12. 空硬盘恢复linux,linux使用foremost恢复文件,硬盘恢复
  13. 计算机应用学图形基础,计算机图形学应用基础
  14. QT应用编程: 编写HC05串口蓝牙调试助手(Android系统APP)
  15. 迅雷:游移的4亿用户帝国
  16. 流式数据传输 php,PHP录制实时流式传输到文件
  17. Android中获取视频的第一帧图片的三种方法
  18. 一维优化 方法c语言,第三章一维优化方法
  19. pathon和c语言的区别
  20. 巨头集体跨界,老玩家悄然出圈,谁在争夺6亿电竞用户?

热门文章

  1. 快速幂 + 矩阵快速幂
  2. 初学ssm框架的信息
  3. MySQL 解压版创建用户密码
  4. SHA204A加密芯片配置
  5. [笔记]Go语言在Linux环境下输出彩色字符
  6. php安装pear和phpunit
  7. Visual Studio 2008 每日提示(十四)
  8. 【C++】【十】二叉树
  9. C# Idioms: Enum还是Enum Class(枚举类)
  10. 使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图