spark-数据分区

原创 2018年04月15日 09:41:04

前提条件:

第一点:只有当数据集多次被调用(例如:循环调用的时候),并且还是基于健的链接操作时,使用分区才会有帮助。

第二点:给定的RDD分区只被扫描一次的时候,适用于分区

第三点:将数据进行分区以后,需要对其进行持久化。如果不进行持久化的话,在下次被调用的时候,数据还是会重新求值,和没有指定分区就一样了。

为什么要对其进行分区?

在分布式程序中,通信(也叫数据混洗)的代价是很大的,因此控制数据的分布减少数据之间的通信可以极大的提升整体性能。Spark程序通过控制RDD分区来减少通信的开销。

分区定义多少个合适?

定义分区的数量应当和集群中的总核心数一样

例子:

val result = sc.textFile("hdfs://sxjdb01:8020/home/mk/chongfu")
val date = result.map(x=>{
  x.split(",")
  (x(0),x(1))
}).partitionBy(new HashPartitioner(100)).persist(StorageLevel.MEMORY_ONLY_2)

//周期性的每隔5分钟调用一次该函数
  def processNewLogs(sc:SparkContext,logFileName:String){
   val events = sc.sequenceFile(logFileName)
    val joined = date .join(events)
    val offTopicVisits = joined.filter { case (userId, (userInfo, linkInfo)) => !userInfo.topics.contains(linkInfo.topic)}.count()
    println("Number of visits to non-subscribed opics: " + offTopicVisits)
  }

此时我们将date进行了分区操作。

native event简介

 几乎是在不知不觉中VC7为C++提供了native event这一扩展功能。背景和动机:当一个对象改变了状态,他怎么通知"关心"它的其他对象呢?C++一直没有一个很好的机制解决这个问题。一般的作法是...
  • Baryon
  • Baryon
  • 2004-03-31 11:50:00
  • 981

spark-第一个spark程序worldCount

  • 2017年11月14日 09:46
  • 2KB
  • 下载

Spark运行架构和解析

  • 2017年02月24日 11:20
  • 1.48MB
  • 下载

Spark-数据倾斜的解决方案.pdf

  • 2017年08月18日 10:07
  • 1.89MB
  • 下载

SparkSQL原理和实践

  • 2017年02月24日 11:21
  • 3.21MB
  • 下载

1Spark生态和安装部署

  • 2017年02月23日 15:21
  • 2MB
  • 下载

GraphX 入门

  • 2017年02月24日 11:34
  • 1.66MB
  • 下载

ORACLE分区表删除分区数据

--全删除 ALTER TABLE tableName DROP PARTITION partionName; --清数据 ALTER TABLE tableName TRUNCATE PARTITI...
  • roamer314
  • roamer314
  • 2016-09-28 14:58:41
  • 2517

Spark数据分区

Spark程序可以通过分区来减少网络通信开销。分区并非对于所有场景都是有好处的:比如, 如果给定RDD只被扫描一遍,那么完全没有必要做分区, 只有当数据多次在诸如连接这种基于键的操作时,分区才会有帮助...
  • wusuopuBUPT
  • wusuopuBUPT
  • 2016-11-20 00:55:02
  • 983

Spark——数据分区(进阶)

对数据集在节点间的分区进行控制是Spark的一个特性之一。在分布式程序中通信的开销很大,和单节点的程序需要为记录集合选择合适的数据结构一样,Spark程序可以通过控制RDD分区方式来减少通信开销。只有...
  • zhaojw_420
  • zhaojw_420
  • 2016-11-30 16:31:41
  • 3519
收藏助手
不良信息举报
您举报文章:spark-数据分区
举报原因:
原因补充:

(最多只允许输入30个字)