Spark RDD使用详解2--RDD创建方式
来源:互联网 发布:秉钧网络 编辑:程序博客网 时间:2024/05/20 20:44
RDD创建方式
1)从Hadoop文件系统(如HDFS、Hive、HBase)输入创建。
2)从父RDD转换得到新RDD。
3)通过parallelize或makeRDD将单机数据创建为分布式RDD。
2)从父RDD转换得到新RDD。
3)通过parallelize或makeRDD将单机数据创建为分布式RDD。
4)基于DB(Mysql)、NoSQL(HBase)、S3(SC3)、数据流创建。
从集合创建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.collectres3: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) scala> rdd.partitions.sizeres4: 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.collectres5: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) scala> rdd2.partitions.sizeres6: 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.sizeres33: 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.countres48: 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.countres49: 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.TableInputFormatimport org.apache.hadoop.hbase.mapreduce.TableInputFormat scala> import org.apache.hadoop.hbase.client.HBaseAdminimport 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.countres52: Long = 1
0 0
- Spark RDD使用详解2--RDD创建方式
- spark创建RDD方式
- Spark RDD使用详解1--RDD原理
- Spark RDD使用详解1--RDD原理
- spark中创建RDD的方式
- Spark创建RDD
- Spark RDD创建操作
- Spark RDD 创建
- spark使用parallelize方法创建RDD
- spark--使用parallelize方法创建RDD
- spark RDD 详解
- spark RDD API详解
- Spark RDD详解
- Spark RDD Transformation 详解
- spark RDD详解
- Spark RDD详解
- spark rdd 详解
- Spark RDD详解
- 安装最新版的cocopods以及高德API的使用
- js控件设置背景色
- java “错误:编码GBK 的不可映射字符”解决方法
- Read Buffer II
- 前端页面动态获取后台执行sql的执行条数(超实用)
- Spark RDD使用详解2--RDD创建方式
- sdut 2506 完美网络
- C#中picturebox上的Label如何实现透明
- Java中String int A=null与String int A=""区别。
- --查询最近执行的Sql语句
- 二分法的常见应用
- 二叉树的三种遍历
- android客户端学习 - 常用布局样式及布局优化include , merge,viewStub
- 快速简单理解i2c标准协议