spark编程基础--5.1RDD编程基础
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编程基础相关推荐
- Spark广播变量实现原理及基础编程
Spark广播变量实现原理及基础编程 实现原理 广播变量用来高效分发较大的对象.向所有工作节点发送一个较大的只读值,以供一个或多个 Spark 操作使用.比如,如果你的应用需要向所有节点发送一个较大的 ...
- Scala 编程基础 C(函数式编程)
文章目录 1. 函数定义和高阶函数 2. 针对集合的操作 3. 函数式编程实例:WordCount 1. 函数定义和高阶函数 Scala是一门多范式编程语言,混合了面向对象编程和函数式编程的风格.在过 ...
- 【组队学习】【34期】零基础学python编程思维
零基础学python编程思维 航路开辟者:邓林权 领航员:沈一 航海士:覃嘉俊.马子阳.左凯文 基本信息 开源内容:https://linklearner.com/datawhale-homepage ...
- 学习python需要什么基础-要学Python编程,需要什么样的基础呢?想找这方面工作...
原标题:要学Python编程,需要什么样的基础呢?想找这方面工作 作为一个初学Python的新手,如何学好这门语言,肯定经常是一头雾水. 那么,学好这门编程语言的基础是什么呢? 第一步,就是马上到网站 ...
- python 计算机程序设计基础-零基础,没有编程和计算机基础,究竟该怎么自学python?...
推荐两本适合小白的python书籍,希望能对你有所帮助. <python编程从入门到实践> /> 本书是一本针对所有层次的Python 读者而作的Python 入门书.全书分两部分: ...
- 怎么自学python编程-零基础如何自学编程?
原标题:零基础如何自学编程? 对于所有编程学习者,尤其是零基础的同学们,在学习的初期,一定要给自己做一个思想上的转在我的编程学习理论中,这个思想的转变至关重要,什么时候你把这个思维转换过来了,你就是真 ...
- python编程零基础-如何零基础入门Python编程?
Python目前已经成为最受欢迎的编程语言之一,吸引了一大批粉丝,但是很多人在要跨入的时候犹豫了,原因竟然是觉得零基础学习Python太难了,真的是这样吗?零基础入门Python编程学习有什么好的技巧 ...
- 0基础学python看什么书-零基础学python编程需要看什么书?
原标题:零基础学python编程需要看什么书? 随着互联网迅速发展,python也呈现出水涨船高的态势.近年来,python在编程语言中一直名列前茅.编程初学者纷纷选择Python作为第一语言.Pyt ...
- 0基础学python编程难吗-对于0基础的人,直接学Python编程合适吗?
原标题:对于0基础的人,直接学Python编程合适吗? 随着人工智能行业的火热,Python语言引起独有的优势成为人工智能行业编程语言的首选,一时间受到大家的追捧,已经有越来越多的人选择从零开始学习, ...
最新文章
- 多线程、多进程、互斥锁
- oracle之数据处理之视图练习
- iOS AFN监听网络状态
- 第七章 线程的调度、优先级和亲缘性(4)
- Python_collections_Counter计数器部分功能介绍
- java标签组件命名_java编程规范之java命名规范
- Visual Studio Code 使用Git进行版本控制
- C语言系列(二):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序...
- Python拷贝(深拷贝deepcopy与浅拷贝copy)
- es6 字符串 对象 拓展 及 less 的语法
- Matlab中fsolve传递系数变量
- 空硬盘恢复linux,linux使用foremost恢复文件,硬盘恢复
- 计算机应用学图形基础,计算机图形学应用基础
- QT应用编程: 编写HC05串口蓝牙调试助手(Android系统APP)
- 迅雷:游移的4亿用户帝国
- 流式数据传输 php,PHP录制实时流式传输到文件
- Android中获取视频的第一帧图片的三种方法
- 一维优化 方法c语言,第三章一维优化方法
- pathon和c语言的区别
- 巨头集体跨界,老玩家悄然出圈,谁在争夺6亿电竞用户?