Spark中RDD的创建与存储

Spark之RDD(弹性分布式数据集) 详解 1.RDD简述 RDD简单的解释: RDD是将数据项拆分为多个分区的集合,存储在集群的工作节点上的内存和磁盘中,并执行正确的操作。 复杂的解释: RDD是用于数据转换的接口,如map算子、filter算子; RDD指向了存储在HDFS、Cassandra、 HBase等、 或缓存 (内存、内存+磁盘、仅磁盘等),或在故障或缓存收回时重新计算其他RDD分区中的数据 RDD(Resilient Distributed Dataset):弹性分布式数据集,Spark计算的基石,为用户屏蔽了底层对数据的复杂抽象和处 阅读详情

RDD,全称为Resilient Distributed Datasets,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。

RDD是只读的、分区记录的集合。RDD不需要物化。RDD含有如何从其他RDD衍生(即计算)出本RDD的相关信息(即Lineage),据此可以从物理存储的数据计算出相应的RDD分区。

每个RDD有5个主要的属性:
 

  1. 一组分片(partition),即数据集的基本组成单位
  2. 一个计算每个分片的函数
  3. 对parent RDD的依赖,这个依赖描述了RDD之间的lineage
  4. 对于key-value的RDD,一个Partitioner
  5. 一个列表,存储存取每个partition的preferred位置。对于一个HDFS文件来说,存储每个partition所在的块的位置。

Internally, each RDD is characterized by five main properties:

 - A list of partitions
 - A function for computing each split
 - A list of dependencies on other RDDs
 - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
 - Optionally, a list of preferred locations to compute each split on (e.g. block locations for
 an HDFS file)

注意:

本文代码以scala编码。

 Spark 2.0才有 SparkSession,2.0之前使用SparkContext

DataSet类型始于Spark 1.6,DataFrame类型始于Spark 1.3  
  一、RDD创建:
 

RDD的创建方式有3种:

1. 从程序中的集合创建,即利用并行集合(parallelized collection)

2. 从已有的RDD创建

3. 从外部储存系统引用创建(e.g. HDFS, Hbase, shared file system)

Spark 配置代码(2.0 之前的版本):

import org.apache.spark._

 val conf = new SparkConf().setAppName("applicationName").setMaster("local") // 本地环境运行
 val sc = new SparkContext(conf)
 val sqlContext = new org.apache.spark.sql.SQLContext(sc)

2.0之后

import org.apache.spark.sql.SparkSession
val ss = SparkSession.builder().enableHiveSupport().getOrCreate()
val sc = ss.sparkContext
val sqlContext=ss.sqlContext

1. 并行化创建

如果要通过并行化集合来创建RDD,需要针对程序中的集合(collection),调用SparkContext中的parallelize()方法。Spark会将集合中的数据拷贝到集群上去,形成一个分布式的数据集合,也就是一个RDD。即:集合中的部分数据会到一个节点上,而另一部分数据会到其它节点上。然后就可以采用并行的方式来操作这个分布式数据集合。

并行化创建速度是非常快的,但是由于这种方法需要用到一台机器中collection的全部数据,所以这种方式在测试和原型构造之外很少使用。

创建格式:

parallelize[T](seq : scala.Seq[T], numSlices : scala.Int): RDD[T] = { /* compiled code */ }

示例:

val data1=sc.parallelize(Seq(("sun",01),("mon",02),("tue",03), ("wed",04),("thus",05)))

val data2=sc.parallelize(Array(1,2,3,4,5))

val sum=data2.reduce(_+_) //对data2数据求和

 在创建RDD的过程中,Spark将集合切分成若干partition。Spark 在集群中会为每个partition运行一个task。 Spark官方的建议为集群中的每个CPU创建2-4个partition。Spark默认会根据集群的情况来设置partition的数量。但是也可以在调用parallelize()方法时,传入第二个参数,来设置RDD的partition数量。比如,parallelize(collection, 10) 则创建了10个partition。

另外,还可以用如下命令创建:

makeRDD[T](seq : scala.Seq[T], numSlices : scala.Int = { /* compiled code */ })

将一个scala.seq创建为带numSlices分区的RDD。注意,parallelize方法可在java中使用,java版本只能接收List的集合,而makeRDD只能在scala中使用。这里这种使用方法实际上调用的是parallelize方法。makeRDD还有另外一种实现:

makeRDD[T:ClassTag](seq:Seq[(T, Seq[String])]):RDD[T]

这个函数还为数据提供了位置信息,这里不细致讨论,可参见:Spark中parallelize函数和makeRDD函数的区别_铭霏的记事本-优快云博客

2.从已有RDD创建

由于RDD是immutable的,我们无法改变一个已经创建好的RDD。所以只能由已有RDD创建新的RDD,这个过程叫做转换(transformation)。对RDD的操作有两类,一类是transformation,一类叫动作(action)。不同的操作对应不同的函数,这点具体将在第二部分讨论。

从已有RDD创建新RDD的transformation通常涉及:map, map,  filter, count, distinct, flatmap 等

例如:

val words=sc.parallelize(Seq("sun", "rises", "in", "the", "east", "and", "sets", "in", “the”, "west"))

val wordPair = words.map(w => (w.charAt(0), w))

wordPair.foreach(println)

输出:

可以看到,RDD中的元素其实就是Seq中的元素。

3.从外部储存系统引用创建

任何Hadoop支持的存储类型都可被用来创建RDD,例如:本地文件系统, HDFS, Cassandra, HBase 等。 利用SparkContext的textFile函数来从外部存储创建RDD。

函数定义如下:

/**
   * Read a text file from HDFS, a local file system (available on all nodes), or any
   * Hadoop-supported file system URI, and return it as an RDD of Strings.
   */
  def textFile(path: String,minPartitions: Int = defaultMinPartitions): RDD[String] = withScope {
    assertNotStopped()
    hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],minPartitions).map(pair => pair._2.toString).setName(path)
  }

分析参数:
path: String 是一个URI,這个URI可以是HDFS、本地文件(全部的节点都可以),或者其他Hadoop支持的文件系统URI返回的是一个字符串类型的RDD,也就是是RDD的内部形式是Iterator[(String)]
minPartitions= math.min(defaultParallelism, 2) 是指定数据的分区,如果不指定分区,当你的核数大于2的时候,不指定分区数那么就是 2
当你的数据大于128M时候,Spark是为每一个快(block)创建一个分片(Hadoop-2.X之后为128M一个block)

创建例:

val rdd = sc.textFile(“/home/hadoop/data.txt”)
//SparkSession版本 Spark 2.0及以上
import org.apache.spark.sql.SparkSession
val    spark =  SparkSession.builder.appName("ExtDataEx1").master("local").getOrCreate()
val data0 = spark.read.csv("path/of/csv/file")//得到DATASET<ROW>类型
val dataRDD1 = spark.read.csv("path/of/csv/file").rdd //读取csv 文件
val dataRDD2 = spark.read.json("path/of/json/file").rdd //读取json 文件,先得到DATASET<ROW>类型
val dataRDD3 = spark.read.textFile("path/of/text/file").rdd//读取text文件,先得到类型DATASET of String 类型

二、RDD的储存

此部分转自:https://blog.youkuaiyun.com/T1DMzks/article/details/71037850

saveAsTextFile

def saveAsTextFile(path: String): Unit

def saveAsTextFile(path: String, codec: Class[_ <: CompressionCodec]): Unit

saveAsTextFile用于将RDD以文本文件的格式存储到文件系统中。

codec参数可以指定压缩的类名。

var rdd1 = sc.makeRDD(1 to 10,2)
scala> rdd1.saveAsTextFile("hdfs://cdh5/tmp/lxw1234.com/") //保存到HDFS
hadoop fs -ls /tmp/lxw1234.com
Found 2 items
-rw-r--r--   2 lxw1234 supergroup        0 2015-07-10 09:15 /tmp/lxw1234.com/_SUCCESS
-rw-r--r--   2 lxw1234 supergroup        21 2015-07-10 09:15 /tmp/lxw1234.com/part-00000

hadoop fs -cat /tmp/lxw1234.com/part-0000012345678

注意:如果使用rdd1.saveAsTextFile(“file:///tmp/lxw1234.com”)将文件保存到本地文件系统,那么只会保存在Executor所在机器的本地目录。 
指定压缩格式保存

rdd1.saveAsTextFile("hdfs://cdh5/tmp/lxw1234.com/",classOf[com.hadoop.compression.lzo.LzopCodec])

hadoop fs -ls /tmp/lxw1234.com
-rw-r--r--   2 lxw1234 supergroup    0 2015-07-10 09:20 /tmp/lxw1234.com/_SUCCESS
-rw-r--r--   2 lxw1234 supergroup    71 2015-07-10 09:20 /tmp/lxw1234.com/part-00000.lzo

hadoop fs -text /tmp/lxw1234.com/part-00000.lzo1234567

saveAsSequenceFile

saveAsSequenceFile用于将RDD以SequenceFile的文件格式保存到HDFS上。

用法同saveAsTextFile。

saveAsObjectFile

def saveAsObjectFile(path: String): Unit

saveAsObjectFile用于将RDD中的元素序列化成对象,存储到文件中。

对于HDFS,默认采用SequenceFile保存。

var rdd1 = sc.makeRDD(1 to 10,2)
rdd1.saveAsObjectFile("hdfs://cdh5/tmp/lxw1234.com/")

hadoop fs -cat /tmp/lxw1234.com/part-00000
SEQ !org.apache.hadoop.io.NullWritable"org.apache.hadoop.io.BytesWritableT12345

saveAsHadoopFile

def saveAsHadoopFile(path: String, keyClass: Class[], valueClass: Class[], outputFormatClass: Class[_ <: OutputFormat[, ]], codec: Class[_ <: CompressionCodec]): Unit

def saveAsHadoopFile(path: String, keyClass: Class[], valueClass: Class[], outputFormatClass: Class[_ <: OutputFormat[, ]], conf: JobConf = …, codec: Option[Class[_ <: CompressionCodec]] = None): Unit

saveAsHadoopFile是将RDD存储在HDFS上的文件中,支持老版本Hadoop API。

可以指定outputKeyClass、outputValueClass以及压缩格式。

每个分区输出一个文件。

var rdd1 = sc.makeRDD(Array(("A",2),("A",1),("B",6),("B",3),("B",7)))

import org.apache.hadoop.mapred.TextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.IntWritable

rdd1.saveAsHadoopFile("/tmp/lxw1234.com/",classOf[Text],classOf[IntWritable],classOf[TextOutputFormat[Text,IntWritable]])

rdd1.saveAsHadoopFile("/tmp/lxw1234.com/",classOf[Text],classOf[IntWritable],classOf[TextOutputFormat[Text,IntWritable]],
                      classOf[com.hadoop.compression.lzo.LzopCodec])12345678910

saveAsHadoopDataset

def saveAsHadoopDataset(conf: JobConf): Unit

saveAsHadoopDataset用于将RDD保存到除了HDFS的其他存储中,比如HBase。

在JobConf中,通常需要关注或者设置五个参数:

文件的保存路径、key值的class类型、value值的class类型、RDD的输出格式(OutputFormat)、以及压缩相关的参数。 
##使用saveAsHadoopDataset将RDD保存到HDFS中

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import SparkContext._
import org.apache.hadoop.mapred.TextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.IntWritable
import org.apache.hadoop.mapred.JobConf



var rdd1 = sc.makeRDD(Array(("A",2),("A",1),("B",6),("B",3),("B",7)))
var jobConf = new JobConf()
jobConf.setOutputFormat(classOf[TextOutputFormat[Text,IntWritable]])
jobConf.setOutputKeyClass(classOf[Text])
jobConf.setOutputValueClass(classOf[IntWritable])
jobConf.set("mapred.output.dir","/tmp/lxw1234/")
rdd1.saveAsHadoopDataset(jobConf)

结果:
hadoop fs -cat /tmp/lxw1234/part-00000
A       2
A       1
hadoop fs -cat /tmp/lxw1234/part-00001
B       6
B       3
B       71234567891011121314151617181920212223242526

##保存数据到HBASE 
HBase建表:

create ‘lxw1234′,{NAME => ‘f1′,VERSIONS => 1},{NAME => ‘f2′,VERSIONS => 1},{NAME => ‘f3′,VERSIONS => 1}

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import SparkContext._
import org.apache.hadoop.mapred.TextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.IntWritable
import org.apache.hadoop.mapred.JobConf
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.mapred.TableOutputFormat
import org.apache.hadoop.hbase.client.Put
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.io.ImmutableBytesWritable

var conf = HBaseConfiguration.create()
    var jobConf = new JobConf(conf)
    jobConf.set("hbase.zookeeper.quorum","zkNode1,zkNode2,zkNode3")
    jobConf.set("zookeeper.znode.parent","/hbase")
    jobConf.set(TableOutputFormat.OUTPUT_TABLE,"lxw1234")
    jobConf.setOutputFormat(classOf[TableOutputFormat])

    var rdd1 = sc.makeRDD(Array(("A",2),("B",6),("C",7)))
    rdd1.map(x => 
      {
        var put = new Put(Bytes.toBytes(x._1))
        put.add(Bytes.toBytes("f1"), Bytes.toBytes("c1"), Bytes.toBytes(x._2))
        (new ImmutableBytesWritable,put)
      }
    ).saveAsHadoopDataset(jobConf)

##结果:
hbase(main):005:0> scan 'lxw1234'
ROW     COLUMN+CELL                                                                                                
 A       column=f1:c1, timestamp=1436504941187, value=\x00\x00\x00\x02                                              
 B       column=f1:c1, timestamp=1436504941187, value=\x00\x00\x00\x06                                              
 C       column=f1:c1, timestamp=1436504941187, value=\x00\x00\x00\x07                                              
3 row(s) in 0.0550 seconds123456789101112131415161718192021222324252627282930313233343536

注意:保存到HBase,运行时候需要在SPARK_CLASSPATH中加入HBase相关的jar包。

可参考:SparkSQL读取HBase数据,通过自定义外部数据源 – lxw的大数据田地

saveAsNewAPIHadoopFile

def saveAsNewAPIHadoopFile[F <: OutputFormat[K, V]](path: String)(implicit fm: ClassTag[F]): Unit

def saveAsNewAPIHadoopFile(path: String, keyClass: Class[], valueClass: Class[], outputFormatClass: Class[_ <: OutputFormat[, ]], conf: Configuration = self.context.hadoopConfiguration): Unit

saveAsNewAPIHadoopFile用于将RDD数据保存到HDFS上,使用新版本Hadoop API。

用法基本同saveAsHadoopFile。

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import SparkContext._
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.IntWritable

var rdd1 = sc.makeRDD(Array(("A",2),("A",1),("B",6),("B",3),("B",7)))
rdd1.saveAsNewAPIHadoopFile("/tmp/lxw1234/",classOf[Text],classOf[IntWritable],classOf[TextOutputFormat[Text,IntWritable]])123456789

saveAsNewAPIHadoopDataset

def saveAsNewAPIHadoopDataset(conf: Configuration): Unit

作用同saveAsHadoopDataset,只不过采用新版本Hadoop API。

以写入HBase为例:

HBase建表:

create ‘lxw1234′,{NAME => ‘f1′,VERSIONS => 1},{NAME => ‘f2′,VERSIONS => 1},{NAME => ‘f3′,VERSIONS => 1}

完整的Spark应用程序:

package com.lxw1234.test

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import SparkContext._
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.mapreduce.Job
import org.apache.hadoop.hbase.mapreduce.TableOutputFormat
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.client.Result
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.client.Put

object Test {
  def main(args : Array[String]) {
   val sparkConf = new SparkConf().setMaster("spark://lxw1234.com:7077").setAppName("lxw1234.com")
   val sc = new SparkContext(sparkConf);
   var rdd1 = sc.makeRDD(Array(("A",2),("B",6),("C",7)))

    sc.hadoopConfiguration.set("hbase.zookeeper.quorum ","zkNode1,zkNode2,zkNode3")
    sc.hadoopConfiguration.set("zookeeper.znode.parent","/hbase")
    sc.hadoopConfiguration.set(TableOutputFormat.OUTPUT_TABLE,"lxw1234")
    var job = new Job(sc.hadoopConfiguration)
    job.setOutputKeyClass(classOf[ImmutableBytesWritable])
    job.setOutputValueClass(classOf[Result])
    job.setOutputFormatClass(classOf[TableOutputFormat[ImmutableBytesWritable]])

    rdd1.map(
      x => {
        var put = new Put(Bytes.toBytes(x._1))
        put.add(Bytes.toBytes("f1"), Bytes.toBytes("c1"), Bytes.toBytes(x._2))
        (new ImmutableBytesWritable,put)
      }    
    ).saveAsNewAPIHadoopDataset(job.getConfiguration)

    sc.stop()   
  }
}
123456789101112131415161718192021222324252627282930313233343536373839

注意:保存到HBase,运行时候需要在SPARK_CLASSPATH中加入HBase相关的jar包。

可参考:SparkSQL读取HBase数据,通过自定义外部数据源 – lxw的大数据田地

参考文献

RDD的几种创建方式_呼呼的小窝-优快云博客_rdd创建

https://techvidvan.com/tutorials/ways-to-create-rdd-in-spark/

https://data-flair.training/blogs/create-rdds-in-apache-spark/

Spark从外部读取数据之textFile_legotime的博客-优快云博客_sc.textfile

RDD的创建方式 大数据实验教学系统RDD的创建方式在调用任何transformation或action操作之前,必须先要有一个RDD。Spark提供了创建RDDs的三种方法。一种方法是将现有的集合并行化。另一种方法是加载外部存储系统中的数据集,比如文件系统。第三种方法是在现有RDD上进行转换来得到新的RDD。     使用程序中的集合创建RDD,主要用于进行测试,可以在实际部署到集群运行之前,自己使用集合构造测试数据,来测试后面的spark应用的流程。   使用HDFS文件创建RDD,应该是最常用的生产环境处理方式,主要可 阅读详情

相关推荐

RDD有哪几种创建方式

rdd = sc.wholeTextFiles("hdfs:///path/to/files/") # 返回 (filename, content) 键值对。filtered_rdd = rdd.filter(lambda x: x > 3) # 过滤大于 3 的数。print(squared_rdd.collect()) # 输出:[1, 4, 9, 16, 25]print(rdd.collect()) # 输出:[1, 2, 3, 4, 5]大数据处理(日志、CSV、JSON 等)。

2402_87144407的博客 1048

Scala操作hdfs文件

package scala_test_lyh import java.io._ import java.net.URI import java.util._ import org.apache.commons.lang3.StringUtils import org.apache.hadoop.conf.Configuration import org.apache.hadoop.fs._ im...

wangwangliqing的博客 1645

cocos2dx中DrawNode画线锯齿和非凸多边形填充

记录一下在cocos2dx中使用DrawNode所遇到的2个问题 1.画线锯齿问题 ios版本下,在AppController.mm中设置CCEAGLView的multiSampling和numberOfSamples。如下图 CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds]

hello-world 5414

Spark读取多个文件为一个RDD

读取多个文件为一个RDD 读取多个文件为RDD时,我们可以使用textFile()或者wholeTextFiles函数,这两个函数之间的主要的区别在于:返回内容的不同,wholeTextFiles会返回文件名和文件内容,而textFile()只返回文件内容。 textFile() 读取单个或多个文本、csv 文件并返回单个 Spark RDD [String] Read single or multiple text, csv files and returns a single Spark RDD [S

qq_33465047的博客 2494

Reality Capture控制点修复/合并模型

通过增加控制点/修改对齐设置参数来修复模型被分为两个部分的解决方法

草履虫建模的博客 5243

STM32F407硬件IIC驱动OLED避坑实录:从‘不显示’到‘稳定刷屏’的完整调试过程

本文详细记录了使用STM32F407硬件IIC驱动OLED屏幕的完整调试过程,从初始的‘不显示’问题到最终实现‘稳定刷屏’。文章涵盖了硬件接线、I2C外设配置、常见问题排查及性能优化技巧,特别针对STM32标准库开发中的难点提供了实用解决方案,是嵌入式开发者驱动OLED屏幕的实用指南。

weixin_30315723的博客 303

Spark 读取CSV文件为RDD

Spark 读取CSV文件为RDD 1 准备数据 在开始之前,假设我们在文件夹“c:/tmp/files”中有以下带有逗号分隔文件内容的 CSV 文件名,我使用这些文件来演示示例。 Before we start, let’s assume we have the following CSV file names with comma delimited file contents at folder “c:/tmp/files” and I use these files to demonstrate

qq_33465047的博客 4078

74LS161/48 交通灯控制系统:30-5-20-5 时序逻辑电路 Multisim 仿真验证

本文详细解析了基于74LS161/48芯片的交通灯控制系统设计,通过Multisim仿真验证30-5-20-5时序逻辑电路。从系统架构搭建、状态机实现到波形分析,提供全流程操作指南与典型问题排查方法,助力数字电路课程设计高效完成。

weixin_26742753的博客 378

怎样使用Spark方法完成RDD的创建?

RDD是Spark的基本数据抽象,它代表了可分区、不可变且可并行计算的数据集合。4.执行RDD操作:一旦你创建了RDD,我们可以对其进行各种操作,如映射、过滤、聚合等。3.使用SparkContext创建RDD:在Spark中,RDD可以从现有数据中加载或通过转换现有RDD来创建。以上笔者列举的只是一个简单的示例,演示了如何使用Spark方法创建RDD并对其执行转换和动作操作。c. 通过转换已存在的RDD创建新的RDD:可以使用RDD上的转换操作,如map、filter等来创建新的RDD。

zy1992As的博客 430

PCIE协议版--M.2接口规范V1.0中文版1——物理规格篇

5.1.3.双模块键模块:同时支持Socket1-DP、Socket1-SD。2.4.7.3.3.双面模块(使用H2.8、H3.2、H4.2连接器)6.5.8.2.5.热设计功率响应-带有风扇类别的薄平台笔记本电脑。2.3.7.1. Socket1&2射频连接器PIN-OUT。5.2.2.Socket2 PIN-OUT(机械KEY B)3.2.10.1.3.极薄的笔记本电脑的电源开关顺序的例子。5.1.1.Socket1-DP(机械KEY A)5.1.2.Socket1-SD(机械KEY E)

想你所想,做你所做 4679

【声纳技术】声呐时间反转镜技术:从被动聚焦到主动空间复用

时间反转镜技术以其独特的物理机制,为水声通信与声呐探测提供了一条绕过传统自适应均衡器的新路径。被动时间反转利用接收端的空间分集实现脉冲压缩,结构简洁、计算高效;主动时间反转则通过发射端预编码,将多径能量引导至目标位置,为多用户下行链路的空间复用奠定了物理基础。从Kuperman等人在海洋中首次验证声学时间反转镜,到TR-MIMO声呐的湖试验证,再到VTRM-CRK多用户通信系统的海试成功,该技术已从理论概念逐步走向工程实用。

u012133341的博客 55

学习笔记Spark(四)—— Spark编程基础(创建RDD、RDD算子、文件读取与存储)

文章目录一、创建RDD1.1、启动Spark shell1.2、创建RDD1.2.1、从集合中创建RDD1.2.2、从外部存储中创建RDD任务1:二、RDD算子2.1、map与flatMap算子应用2.1.1、map2.1.2、flatMap2.1.3、mapPartitions2.2、sortBy与filter算子应用2.2.1、sortBy2.2.2、filter任务2:2.3、交集与并集计算的算子应用2.3.1、distinct2.3.2、union2.3.3、intersection2.3.4、su

别呀的博客 8381

国科大作业考试资料《人工智能原理与算法》2024新编-第二次作业整理

1、对于下列活动,分别给出任务环境的PEAS描述, 并按2.3.2节列出的性质进行分析: 3、为图2.2中描述的吸尘器世界实现一个可以进行性能度量的环境模拟器。你的实现是必须是模块化的,以使传感器、执行器和环境特征(大小、形状、灰尘放置等)便于修改。 4、实现上述题目真空吸尘器环境中的简单反射Agent。用所有可能的初始灰尘分布和Agent位置,运行环境模拟器和Agent。记录Agent在每种情况下的性能评分和总体平均评分。

MatsumotoChrikk 1187

Spark 中 RDD 的创建

在 Spark 中创建 RDD 的创建方式可以分为四种: 1、从集合(内存)中创建 RDD package spark.core.rdd import org.apache.spark.{SparkConf, SparkContext} /** * 从集合(内存)中创建 RDD * 1、parallelize * 2、makeRDD * 从底层代码实现来讲,makeRDD 方法其实就是 parallelize 方法。 */ object Spark_RDD_Memory { def mai

a1786742005的博客 803

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spark RDD 的创建方式

这种方法的好处就是可以在Spark shell快速创建RDD,并在RDD上面执行各种操作。但是除了测试代码效果之外,在实际的开发工作中很少用这种方法,因为它要求所有的操作数据都在一台机器上。Spark的Transformation操作将从一个给定的RDD生成新RDD。Spark是支持使用任何Hadoop支持的存储系统上的文件创建RDD的,比如说HDFS、Cassandra、HBase以及本地文件。下面是用并行化创建RDD的例子,还对创建出来的RDD进行sortByKey操作,即排序操作。

5万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

spark-5.sparkcore_2_RDD的创建与类型

1).从集合中创建RDD。 方法1 def makeRDD[T: ClassTag]( seq: Seq[T], numSlices: Int = defaultParallelism): RDD[T] standalone模式下的并行度defaultParallelism:conf.getInt(“spark.default.parallelism”, math.max(totalCoreCount.get(), 2)) 方法2 def parallelize[T: ClassTag](seq: Se

qq_30657195的博客 186

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

创建RDD

1.了解RDD的概念 2.掌握RDD的创建方式在/home目录里创建test.txt 单词用空格分隔 将test.txt上传到HDFS的/park目录里 查看文件内容 如果以 spark-shell --master spark://master:7077方式启动spark-shell,只能读取HDFS系统上的文件,不能读取本地系统文件,而以spark-shell –master=local[*]方式启动spark-shell,既可以读取本地系统文件,加不加file://都可以,还可以访问HDFS系统上的文

m0_67806436的博客 824

Spark大数据处理讲课笔记3.1 掌握RDD的创建

将数据集(hello, world, scala, spark, love, spark, happy)存储在三个节点上,节点一存储(hello, world),节点二存储(scala, spark, love),节点三存储(spark, happy),这样对三个节点的数据可以。在编程时,可以把RDD看作是一个数据操作的基本单位,而不必关心数据的分布式特性,Spark会自动将RDD的数据分发到集群的各个节点。想法是活的,语法是死的,重要的是得先有想法,然后用语法去实现。,查看RDD中的内容,保存到常量。

weixin_51185556的博客 188

Spark之RDD创建方式

在Spark中创建RDD的创建方式可以分为三种:从集合中创建RDD、从外部存储创建RDD、从其他RDD创建。 创建时环境依赖 <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version&g...

lslslslslss的博客 898

Spark之RDD的创建

要使用Spark,开发者需要编写一个Driver程序,它被提交到集群以调度运行Worker RDD的创建 在Spark中创建RDD的创建方式可以分为三种:从集合中创建RDD;从外部存储创建RDD;从其他RDD创建。 从集合中创建 从集合中创建RDD,Spark主要提供了两种函数:parallelize和makeRDD 1)使用parallelize()从集合创建 2)使用make...

qq_43193797的博客 211

spark Rdd的创建

RDD的创建方式与实例 Rdd创建方式可分为三种: 1)从集合中创建Rdd(也可称为从内存中创建) 从集合创建Rdd,Spark主要提供了两种函数:parallelize和makeRdd,两种使用相同(推荐使用makeRdd) 2)从外部存储创建Rdd 包括本地的文件系统,还有所有Hadoop支持的数据库,比如HDFS、Cassandra、HBASE等 3)从其他Rdd创建(不做操作) ...

weixin_45449896的博客 203

Spark Core快速入门系列(2) | Spark Core中编程模型的理解与RDD的创建

  大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只有csdn这一个平台,博客主页:https://buwenbuhuo.blog.youkuaiyun.com/   此篇为大家带来的是Spark Core中编程模型的理解与RDD的.

不温卜火 6293

【SparkCore-RDD】

RDD的创建方式

Tonystark_lz的博客 487

Spark(6):RDD的创建和并行度

默认情况下, Spark 可以将一个作业切分多个任务后,发送给 Executor 节点并行计算,而能够并行计算的任务数量我们称之为并行度。这个数量可以在构建 RDD 时指定。记住,这里的并行执行的任务数量,并不是指的切分任务的数量,不要混淆了。由外部存储系统的数据集创建 RDD 包括:本地的文件系统,所有 Hadoop 支持的数据集,比如 HDFS、 HBase 等。使用 new 的方式直接构造 RDD,一般由 Spark 框架自身使用。主要是通过一个 RDD 运算完后,再产生新的 RDD。

yang_shibiao的博客 1128

RDD的创建

可以通过将本地集合(如数组、列表等)传递给 SparkContext 的 parallelize。spark的计算功能是通过RDD来实现的,那么如何去创建RDD呢?方法来创建 RDD。例如,读入外部的文件。

2401_84653595的博客 411
上一篇: Scala GUI使用笔记,scala swing库的使用
下一篇: 从Spark Row 到 GenericRowWithSchema
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值