- 博客(9)
- 收藏
- 关注
原创 Spark SQL数据源 - Parquet文件
对于这种情况,Spark SQL读取Parquet数据源时可以自动检测并合并所有Parquet文件的Schema。导入SaveMode类后,执行命令:usersdf.select("name", "favorite_color").write.mode(SaveMode.Overwrite)parquet("hdfs://master:9000/result")加载和写入Parquet文件时,除了可以使用load()方法和save()方法外,还可以直接使用Spark SQL内置的parquet()方法。
2023-06-15 13:57:23
529
原创 RDD持久化机制
可以在RDD上使用persist()或cache()方法来标记要持久化的RDD(cache()方法实际上底层调用的是persist()方法)。Spark的缓存是容错的:如果缓存的RDD的任何分区丢失,Spark就会按照该RDD原来的转换过程自动重新计算并缓存。计算RDD4,就是基于RDD3缓存的数据开始计算,不用从头到尾跑一趟。计算RDD5,就是基于RDD3缓存的数据开始计算,不用从头到尾跑一趟。查看RDD4内容,会从RDD1到RDD2到RDD3到RDD4跑一趟。计算到RDD3时,标记持久化。
2023-06-14 23:04:48
146
原创 RDD容错机制
Spark建议,在将RDD标记为检查点之前,最好将RDD持久化到内存,因为Spark会单独启动一个任务将标记为检查点的RDD的数据写入文件系统,如果RDD的数据已经持久化到了内存,将直接从内存中读取数据,然后进行写入,提高数据写入效率,否则需要重复计算一遍RDD的数据。cache()或者persist()是将数据存储于机器本地的内存或磁盘,当机器发生故障时无法进行数据恢复,而检查点是将RDD数据存储于外部的共享文件系统(例如HDFS),共享文件系统的副本机制保证了数据的可靠性。(二)与RDD持久化的区别。
2023-06-14 22:41:49
182
原创 掌握RDD分区
RDD分区概念RDD是一个大的数据集合,该集合被划分成多个子集合分布到了不同的节点上,而每一个子集合就称为分区(Partition)。因此,也可以说,RDD是由若干个分区组成的。RDD分区作用在分布式程序中,网络通信的开销是很大的,因此控制数据分布以获得最少的网络传输可以极大的提升程序的整体性能,Spark程序可以通过控制RDD分区方式来减少通信开销。Spark中所有的RDD都可以进行分区,系统会根据一个针对键的函数对元素进行分区。
2023-06-12 21:31:40
62
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人