RDD之三:RDD创建方式
RDD创建方式
2)从父RDD转换得到新RDD。
3)通过parallelize或makeRDD将单机数据创建为分布式RDD。
从集合创建RDD
- parallelize
def parallelize[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0: ClassTag[T]): RDD[T]
从一个Seq集合创建RDD。
参数1:Seq集合,必须。
参数2:分区数,默认为该Application分配到的资源的CPU核数
- scala> var rdd = sc.parallelize(1 to 10)
- rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[2] at parallelize at :21
- scala> rdd.collect
- res3: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
- scala> rdd.partitions.size
- res4: Int = 15
- //设置RDD为3个分区
- scala> var rdd2 = sc.parallelize(1 to 10,3)
- rdd2: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[3] at parallelize at :21
- scala> rdd2.collect
- res5: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
- scala> rdd2.partitions.size
- res6: Int = 3
- makeRDD
def makeRDD[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0: ClassTag[T]): RDD[T]
这种用法和parallelize完全相同
def makeRDD[T](seq: Seq[(T, Seq[String])])(implicit arg0: ClassTag[T]): RDD[T]
该用法可以指定每一个分区的preferredLocations。
- scala> var collect = Seq((1 to 10,Seq("slave007.lxw1234.com","slave002.lxw1234.com")),
- (11 to 15,Seq("slave013.lxw1234.com","slave015.lxw1234.com")))
- collect: Seq[(scala.collection.immutable.Range.Inclusive, Seq[String])] = List((Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
- List(slave007.lxw1234.com, slave002.lxw1234.com)), (Range(11, 12, 13, 14, 15),List(slave013.lxw1234.com, slave015.lxw1234.com)))
- scala> var rdd = sc.makeRDD(collect)
- rdd: org.apache.spark.rdd.RDD[scala.collection.immutable.Range.Inclusive] = ParallelCollectionRDD[6] at makeRDD at :23
- scala> rdd.partitions.size
- res33: Int = 2
- scala> rdd.preferredLocations(rdd.partitions(0))
- res34: Seq[String] = List(slave007.lxw1234.com, slave002.lxw1234.com)
- scala> rdd.preferredLocations(rdd.partitions(1))
- res35: Seq[String] = List(slave013.lxw1234.com, slave015.lxw1234.com)
指定分区的优先位置,对后续的调度优化有帮助。
从外部存储创建RDD
- textFile
//从hdfs文件创建.
- //从hdfs文件创建
- scala> var rdd = sc.textFile("hdfs:///tmp/lxw1234/1.txt")
- rdd: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[26] at textFile at :21
- scala> rdd.count
- res48: Long = 4
- //从本地文件创建
- scala> var rdd = sc.textFile("file:///etc/hadoop/conf/core-site.xml")
- rdd: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[28] at textFile at :21
- scala> rdd.count
- res49: Long = 97
注意这里的本地文件路径需要在Driver和Executor端存在。
- 从其他HDFS文件格式创建
hadoopFile
sequenceFile
objectFile
newAPIHadoopFile
- 从Hadoop接口API创建
hadoopRDD
newAPIHadoopRDD
比如:从Hbase创建RDD
- scala> import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor, TableName}
- import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor, TableName}
- scala> import org.apache.hadoop.hbase.mapreduce.TableInputFormat
- import org.apache.hadoop.hbase.mapreduce.TableInputFormat
- scala> import org.apache.hadoop.hbase.client.HBaseAdmin
- import org.apache.hadoop.hbase.client.HBaseAdmin
- scala> val conf = HBaseConfiguration.create()
- scala> conf.set(TableInputFormat.INPUT_TABLE,"lxw1234")
- scala> var hbaseRDD = sc.newAPIHadoopRDD(
- conf,classOf[org.apache.hadoop.hbase.mapreduce.TableInputFormat],classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],classOf[org.apache.hadoop.hbase.client.Result])
- scala> hbaseRDD.count
- res52: Long = 1
RDD之三:RDD创建方式的更多相关文章
- spark教程(三)-RDD认知与创建
RDD 介绍 spark 最重要的一个概念叫 RDD,Resilient Distributed Dataset,弹性分布式数据集,它是 spark 的最基本的数据(也是计算)抽象. 代码中是一个抽象 ...
- 菜单(Menu)的三中创建方式——Android开发之路2
菜单的三种创建方式 一.OptionsMenu---选项菜单 Android应用中的菜单默认是隐藏的,只有当用户点击手机上的MENU键,系统才会显示菜单.这种菜单叫做选项菜单(Options Menu ...
- AlertDialog的六种创建方式
AlertDialog的六种创建方式 创建AlertDialog的步骤: 1.创建AlertDialog.Builder对象 2.调用Builder对象的setTitle方法设置标题,setIcon方 ...
- javascript一种新的对象创建方式-Object.create()
1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不 ...
- iOS控制器的创建方式
iOS控制器的创建.除了常见的alloc init外还有通过加载storyboard和xib的方式,下边逐一展开: 1.代码alloc init 创建方式 ViewController *vc= [[ ...
- 面向面试编程——javascript对象的几种创建方式
javascript对象的几种创建方式 总共有以下几个模式: 1.工厂模式 2.构造函数模式 3.原型模式 4.混合构造函数和原型模式 5.动态原型模式 6.寄生构造函数模式 7.稳妥构造函数模式 1 ...
- 帧动画的创建方式 - xml方式
废话不多说,先看东西 创建帧动画1 - xml方式 帧动画的创建方式主要以下2种: * 用xml创建动画: * 用代码创建动画: 本文内容主要关注 xml文件 创建帧动画的方式 xml文件 ...
- 帧动画的创建方式 - 纯Java代码方式
废话不多说,先看东西 帧动画的创建方式主要以下2种: * 用xml创建动画: * 纯Java代码创建动画: 本文内容主要关注 纯java代码创建帧动画 的方式: 用xml创建帧动画:http:// ...
- SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题
SQL优化 MySQL版 - 索引分类.创建方式.删除索引.查看索引.SQL性能问题 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 索引分类 单值索引 单的意思就是单列的值,比如说有 ...
随机推荐
- MyEclipse持续性开发教程:用JPA和Spring管理数据(三)
MyEclipse红运年货节 在线购买低至69折!火爆开抢>> [MyEclipse最新版下载] 本教程介绍了MyEclipse中的一些基于JPA / Spring的功能.有关设置JPA项 ...
- 这是一个专注于电脑技术、软件应用、互联网、嵌入式,电子技术行业等的原创IT博客
http://www.choovin.com/ 这是一个专注于电脑技术.软件应用.互联网.嵌入式,电子技术行业等的原创IT博客
- fluent nhibernate映射的数值类型问题
fluent nhibernate中,数值类型设置不当,就可能会引发一些意想不到错误. 一.引发映射错误 比如,oracle数据库中,字段ID类型是number,结果用codesmith生成代码,实体 ...
- 详解基本TCP套接字函数
以下讲解基本TCP套接字函数. 1.socket 函数 指定期望的通信协议类型. #include <sys/types.h> /* See NOTES */ #include ...
- CTC+pytorch编译配置warp-CTC
CTC CTC可以生成一个损失函数,用于在序列数据上进行监督式学习,不需要对齐输入数据及标签,经常连接在一个RNN网络的末端,训练端到端的语音和文本识别系统.CTC论文地址:http://www.cs ...
- magento首页点击任何产品都出现404错误的问题方法
很简单,只要在其他项目上的根目录上复制一个.htaccess文件到项目跟目录下就可以 了,其实就是是设置伪静态:
- ORACLE常用系统查询
目录(?)[-] 查询系统所有对象 查看系统所有表 查看所有用户的表 查看当前用户表 查看用户表索引 查看主键 查看唯一性约束 查看外键 查看表的列属性 查看所有表空间 查看oracle最大连接数 修 ...
- windows7所有版本迅雷地址下载集合(含32位和64位) - imsoft.cnblogs
Windows7 SP1旗舰版 32位官方原版下载: ed2k://|file|/cn_windows_7_ultimate_with_sp1_x86_dvd_618763.iso|265187737 ...
- 数组Arry的随机排序
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- 51Nod 1002:数塔取数问题(DP)
1002 数塔取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值. 每 ...