大白

spark-数据分区

前提条件:

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

第二点:给定的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进行了分区操作。

阅读更多
个人分类: spark
上一篇spark-yarn查看集群资源
下一篇回归问题之单变量线性回归算法
想对作者说点什么? 我来说一句

spark-第一个spark程序worldCount

2017年11月14日 2KB 下载

Spark运行架构和解析

2017年02月24日 1.48MB 下载

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

2017年08月18日 1.89MB 下载

1Spark生态和安装部署

2017年02月23日 2MB 下载

SparkSQL原理和实践

2017年02月24日 3.21MB 下载

GraphX 入门

2017年02月24日 1.66MB 下载

spark快速大数据分析

2017年11月07日 5.77MB 下载

没有更多推荐了,返回首页

关闭
关闭