Spark官方文档-SparkCore

2024-03-04 20:32
文章标签 文档 官方 spark sparkcore

本文主要是介绍Spark官方文档-SparkCore,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

快速开始

RDD

1.Spark 的主要抽象是一个分布式弹性数据集(RDD),可以从 Hadoop InputFormats(例如 HDFS 文件)或通过转换其他RDD来创建RDD。

val textFile = spark.read.textFile("README.md")

2.可以通过调用某些操作直接从 RDD中获取值,或者转换RDD以获得新的值

 textFile.count() 
textFile.first() // First item in this Dataset

3.将此数据集转换为新的数据集。我们调用filter返回一个包含文件中RDD子集的新数据集。

val linesWithSpark = textFile.filter(line => line.contains("Spark"))

 

更多关于数据集操作

1.找到单词最多的那一行:

先计算每行单词数;reduce在该数据集上调用以查找最大字数;

textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))

 

 

RDD

初始化 Spark

Spark 程序必须做的第一件事是创建一个SparkContext对象,它告诉 Spark 如何访问集群。要创建一个,SparkContext您首先需要构建一个SparkConf对象,该对象包含有关您的应用程序的信息。每个 JVM 应该只有一个 SparkContext 处于活动状态。stop()在创建新的之前,您必须激活 SparkContext。

val conf = new SparkConf().setAppName(appName).setMaster(master)
new SparkContext(conf)

appName参数是您的应用程序在集群 UI 上显示的名称。 master是一个Spark、Mesos 或 YARN 集群 URL,或者一个特殊的“本地”字符串以在本地模式下运行。 

Using the Shell

$ ./bin/spark-shell --master local[4] --jars code.jar

弹性分布式数据集 (RDD)

Spark 围绕弹性分布式数据集(RDD)的概念展开,RDD 是可以并行操作的元素的容错集合。

有两种方法可以创建 RDD: 在驱动程序中并行化现有集合,或引用外部存储系统中的数据集,例如共享文件系统、HDFS、HBase 或任何提供 Hadoop InputFormat 的数据源。

并行集合

并行化集合是通过在驱动程序(Scala )中的现有集合上调用SparkContextparallelize方法来创建的Seq。集合的元素被复制以形成可以并行操作的分布式数据集。例如,这里是如何创建一个包含数字 1 到 5 的并行化集合:

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

创建后,distData可以并行操作分布式数据集 ( )。例如,我们可能会调用distData.reduce((a, b) => a + b)将数组的元素相加。稍后我们将描述分布式数据集上的操作。

并行集合的一个重要参数是将数据集切割成的分区。Spark 将为集群的每个分区运行一个任务。通常,集群中的每个 CPU 需要 2-4 个分区。通常,Spark 会尝试根据您的集群自动设置分区数。但是,您也可以通过将其作为第二个参数传递给parallelize(例如sc.parallelize(data, 10))来手动设置它。注意:代码中的某些地方使用术语切片(分区的同义词)来保持向后兼容性。

外部数据集

Spark 可以从 Hadoop 支持的任何存储源创建分布式数据集,包括本地文件系统、HDFS、Cassandra、HBase、Amazon S3等。Spark 支持文本文件、SequenceFiles和任何其他 Hadoop InputFormat

可以使用SparkContexttextFile方法创建文本文件 RDD 。此方法需要一个URI的文件(本地路径的机器上,或一个hdfs://s3a://等URI),并读取其作为行的集合。这是一个示例调用:

val distFile = sc.textFile("data.txt")

使用 Spark 读取文件的一些注意事项:

  • 如果使用本地文件系统上的路径,则该文件也必须可以在所有工作节点上的相同路径上访问。要么将文件复制到所有工作节点,要么使用网络安装的共享文件系统。

  • Spark 的所有基于文件的输入方法,包括textFile,都支持在目录、压缩文件和通配符上运行。例如,你可以使用textFile("/my/directory")textFile("/my/directory/*.txt")textFile("/my/directory/*.gz")。当读取多个文件时,分区的顺序取决于文件从文件系统返回的顺序。例如,它可能会也可能不会遵循文件的字典顺序(按路径)。在分区内,元素根据它们在底层文件中的顺序进行排序。

  • textFile方法还采用可选的第二个参数来控制文件的分区数。默认情况下,Spark 为文件的每个块创建一个分区(在 HDFS 中默认块为 128MB),但您也可以通过传递更大的值来请求更多的分区。请注意,分区数不能少于块数

 

除了文本文件,Spark 的 Scala API 还支持其他几种数据格式:

  • SparkContext.wholeTextFiles允许您读取包含多个小文本文件的目录,并将每个文件作为(文件名、内容)的二元组对返回。与textFile对比,后者将在每个文件中的每行的一条记录返回。分区由数据本地性决定,在某些情况下,这可能导致分区太少(本地数据较少)。对于这些情况,wholeTextFiles提供可选的第二个参数来控制最小分区数。

  • 对于SequenceFiles(K,V存储格式的文件),使用 SparkContext 的sequenceFile[K, V]方法,其中KV是文件中键和值的类型。这些应该是 Hadoop 的Writable接口的子类,如IntWritableText。此外,Spark 允许您为一些常见的 Writable 指定基础类型;例如,sequenceFile[Int, String]会自动读取 IntWritables 和 Texts。

  • 对于其他 Hadoop InputFormats,您可以使用该SparkContext.hadoopRDD方法,该方法采用任意JobConf输入格式类、键类和值类。以与使用输入源的 Hadoop 作业相同的方式设置这些。您还可以使用SparkContext.newAPIHadoopRDD基于“新”MapReduce API ( org.apache.hadoop.mapreduce) 的InputFormats 。

  • RDD.saveAsObjectFileSparkContext.objectFile支持,用序列化的 Java 对象,这种简单格式来组成RDD,并用来保存RDD。虽然这不如 Avro 之类的专用格式有效,但它提供了一种保存任何 RDD 的简单方法。

 

RDD 操作

RDD 支持两种类型的操作:

transforms(转换)它从现有的数据集创建一个新的数据集

actions(行动),它在对数据集运行

这篇关于Spark官方文档-SparkCore的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/774351

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

Python脚本:TXT文档行数统计

count = 0 #计数变量file_dirs = input('请输入您要统计的文件根路径:')filename = open(file_dirs,'r') #以只读方式打开文件file_contents = filename.read() #读取文档内容到file_contentsfor file_content in file_contents:

bcolz文档

原文:http://bcolz.blosc.org/en/latest/reference.html First level variables bcolz.__version__'''bcolz包的版本。''' bcolz.dask_here'''是否检测到dask的最低版本。''' bcolz.min_dask_version'''需要dask的最低版本(dask是可选

WordPress开发中常用的工具或api文档

http://php.net/ http://httpd.apache.org/ https://wordpress.org/ https://cn.wordpress.org/ https://core.svn.wordpress.org/ zh-cn:开发者文档: https://codex.wordpress.org/zh-cn:%E5%BC%80%E5%8F%91%E8%80%

Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测

关于饰品类产品合规问题宣导: 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规,其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性,欧盟REACH法规规定,珠宝首饰上架各大电商平台前必须进行RSLReport(欧盟禁限用化学物质检测报告)资质认证,以确保产品不含对人体有害的化学物质。 RSL-铅,

Python知识点:使用Python进行PDF文档处理

使用 Python 进行 PDF 文档处理可以通过多种库来实现,包括 PyPDF2、pdfplumber、reportlab、pdfminer 等。这些库可以处理不同的 PDF 任务,例如 提取文本、拆分合并 PDF、修改 PDF、生成 PDF 等。以下是几种常见操作及对应的库和代码示例。 1. 安装常用库 首先,安装常用的 PDF 处理库: pip install PyPDF2 pdfpl

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)

博主介绍:     ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。 技术范围:     我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT