003-10-02【Spark官网思维笔记】香积寺旁老松树边马大爷家女儿大红用GPT学习Spark入门知识

news2025/1/13 11:45:32

003-10-02【Spark官网思维笔记】香积寺旁老松树边马大爷家女儿大红用GPT学习Spark入门知识.

  • Spark 快速入门
    • 快速开始
      • 使用 Spark Shell 进行交互式分析:
      • 独立的应用程序
      • 其他
    • 1, 使用 Spark Shell 进行交互式分析
      • 1.1 基本
      • 1.2 有关Dataset操作的更多信息
      • 1.3 缓存
    • 2, 独立的应用程序
    • 3,其他
    • 4 思维导图

Spark 快速入门

快速开始

使用 Spark Shell 进行交互式分析:

基本
有关Dataset操作的更多信息
缓存

独立的应用程序

其他

本教程提供了 Spark 的使用快速介绍。我们将首先通过 Spark 的交互式 shell(Python 或 Scala)介绍 API,然后展示如何使用 Java、Scala 和 Python 编写应用程序。
要按照本指南进行操作,请首先从Spark 网站下载 Spark 的打包版本 。由于我们不会使用 HDFS,因此您可以下载适用于任何版本 Hadoop 的软件包。
需要注意的是,在Spark 2.0之前,Spark的主要编程接口是弹性分布式数据集(RDD)。Spark 2.0 之后,RDD 被 Dataset 取代,Dataset 与 RDD 一样是强类型的,但在底层有更丰富的优化。仍然支持 RDD 接口,您可以在RDD 编程指南中获得更完整的参考。但是,我们强烈建议您改用Dataset,它比RDD具有更好的性能。请参阅SQL 编程指南以获取有关Dataset的更多信息。

1, 使用 Spark Shell 进行交互式分析

1.1 基本

Spark 的 shell 提供了一种学习 API 的简单方法,以及交互式分析数据的强大工具。它可以在 Scala(在 Java VM 上运行,因此是使用现有 Java 库的好方法)或 Python 中使用。通过在 Spark 目录中运行以下命令来启动它:
./bin/spark-shell
Spark 的主要抽象是称为数据集的分布式项目集合。可以从 Hadoop 输入格式(例如 HDFS 文件)或通过转换其他数据集来创建数据集。让我们根据 Spark 源目录中的 README 文件的文本创建一个新的数据集:

scala> val textFile = spark.read.textFile(“README.md”)
textFile: org.apache.spark.sql.Dataset[String] = [value: string]
您可以通过调用某些操作直接从数据集中获取值,或者转换数据集以获取新的数据集。欲了解更多详细信息,请阅读API 文档。

scala> textFile.count() // Number of items in this Dataset
res0: Long = 126 // May be different from yours as README.md will change over time, similar to other outputs

scala> textFile.first() // First item in this Dataset
res1: String = # Apache Spark
现在让我们将此数据集转换为新的数据集。我们调用filter返回一个新的数据集,其中包含文件中项目的子集。

scala> val linesWithSpark = textFile.filter(line => line.contains(“Spark”))
linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string]
我们可以将转换和行动链接在一起:

scala> textFile.filter(line => line.contains(“Spark”)).count() // How many lines contain “Spark”?
res3: Long = 15

1.2 有关Dataset操作的更多信息

数据集操作和转换可用于更复杂的计算。假设我们想要找到单词最多的行:
scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
res4: Long = 15
首先将一行映射到一个整数值,创建一个新的数据集。reduce调用该数据集来查找最大字数。map和 的参数reduce是 Scala 函数文字(闭包),并且可以使用任何语言功能或 Scala/Java 库。例如,我们可以轻松调用其他地方声明的函数。我们将使用Math.max()函数来使代码更容易理解:

scala> import java.lang.Math
import java.lang.Math

scala> textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))
res5: Int = 15
一种常见的数据流模式是由 Hadoop 推广的 MapReduce。Spark 可以轻松实现 MapReduce 流程:

scala> val wordCounts = textFile.flatMap(line => line.split(" ")).groupByKey(identity).count()
wordCounts: org.apache.spark.sql.Dataset[(String, Long)] = [value: string, count(1): bigint]
在这里,我们调用将行flatMap数据集转换为单词数据集,然后组合groupByKey并count计算文件中每个单词的计数作为(字符串,长整型)对的数据集。要在 shell 中收集字数统计,我们可以调用collect:

scala> wordCounts.collect()
res6: Array[(String, Int)] = Array((means,1), (under,2), (this,3), (Because,1), (Python,2), (agree,1), (cluster.,1), …)
说明, identity 是匿名函数, 函数作用是对传入的值原样返回,此处表示key不变。

1.3 缓存

Spark 还支持将数据集拉入集群范围的内存缓存中。当重复访问数据时(例如查询小型“热”数据集或运行 PageRank 等迭代算法时),这非常有用。作为一个简单的示例,让我们将linesWithSpark数据集标记为要缓存:
scala> linesWithSpark.cache()
res7: linesWithSpark.type = [value: string]

scala> linesWithSpark.count()
res8: Long = 15

scala> linesWithSpark.count()
res9: Long = 15

使用 Spark 来探索和缓存 100 行文本文件似乎很愚蠢。有趣的是,这些相同的函数可以用于非常大的数据集,即使它们分布在数十或数百个节点上。您还可以通过连接bin/spark-shell到集群以交互方式执行此操作,如RDD 编程指南中所述。

2, 独立的应用程序

假设我们希望使用 Spark API 编写一个独立的应用程序。我们将演练一个使用 Scala(使用 sbt)、Java(使用 Maven)和 Python(pip)的简单应用程序。
我们将在 Scala 中创建一个非常简单的 Spark 应用程序——事实上,它非常简单,因此被命名为SimpleApp.scala:

/* SimpleApp.scala */
import org.apache.spark.sql.SparkSession

object SimpleApp {
def main(args: Array[String]) {
val logFile = “YOUR_SPARK_HOME/README.md” // Should be some file on your system
val spark = SparkSession.builder.appName(“Simple Application”).getOrCreate()
val logData = spark.read.textFile(logFile).cache()
val numAs = logData.filter(line => line.contains(“a”)).count()
val numBs = logData.filter(line => line.contains(“b”)).count()
println(s"Lines with a: $numAs, Lines with b: $numBs")
spark.stop()
}
}
请注意,应用程序应该定义main()方法而不是扩展scala.App。的子类scala.App可能无法正常工作。

该程序仅计算 Spark README 中包含“a”的行数和包含“b”的行数。请注意,您需要将 YOUR_SPARK_HOME 替换为 Spark 的安装位置。与前面使用 Spark shell 的示例不同,Spark shell 会初始化自己的 SparkSession,而我们将 SparkSession 初始化为程序的一部分。

我们调用SparkSession.builder构造一个[[SparkSession]],然后设置应用程序名称,最后调用getOrCreate获取[[SparkSession]]实例。

我们的应用程序依赖于 Spark API,因此我们还将包含一个 sbt 配置文件 , build.sbt它解释了 Spark 是一个依赖项。该文件还添加了 Spark 依赖的存储库:

name := “Simple Project”

version := “1.0”

scalaVersion := “2.11.8”

libraryDependencies += “org.apache.spark” %% “spark-sql” % “2.3.0”
为了使 sbt 正常工作,我们需要 根据典型的目录结构进行SimpleApp.scala布局。build.sbt一旦完成,我们就可以创建一个包含应用程序代码的 JAR 包,然后使用该spark-submit脚本来运行我们的程序。

// Your directory layout should look like this
$ find .
.
./build.sbt
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala

// Package a jar containing your application
$ sbt package

[info] Packaging {…}/{…}/target/scala-2.11/simple-project_2.11-1.0.jar

// Use spark-submit to run your application
$ YOUR_SPARK_HOME/bin/spark-submit
–class “SimpleApp”
–master local[4]
target/scala-2.11/simple-project_2.11-1.0.jar

Lines with a: 46, Lines with b: 23

3,其他

恭喜您运行您的第一个 Spark 应用程序!

要深入了解 API,请从RDD 编程指南和SQL 编程指南开始,或者参阅其他组件的“编程指南”菜单。
要在集群上运行应用程序,请参阅部署概述。
最后,Spark 在目录中包含了几个示例examples(Scala、 Java、 Python、 R)。您可以按如下方式运行它们:
// For Scala and Java, use run-example:
./bin/run-example SparkPi

// For Python examples, use spark-submit directly:
./bin/spark-submit examples/src/main/python/pi.py

// For R examples, use spark-submit directly:
./bin/spark-submit examples/src/main/r/dataframe.R

4 思维导图

思维笔记思维导图模式:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STL-list的使用简介

目录 ​编辑 一、list的底层实现是带头双向循环链表 二、list的使用 1、4种构造函数(与vector类似)​编辑 2、迭代器iterator 3、容量(capicity)操作 4、element access 元素获取 5、增删查改 list modifiers 6、list的迭…

YOLOv8优化策略:轻量化改进 | 华为Ghostnet,超越谷歌MobileNet | CVPR2020

🚀🚀🚀本文改进:Ghost bottleneck为堆叠Ghost模块 ,与YOLOV8建立轻量C2f_GhostBottleneck 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.Ghostnet介绍 论文: https://arxiv.org/pdf/1911.11907.…

Js--数组(三)

1.什么是数组? 数组:(Array)是一种可以按顺序保存数据的数据类型 2.为什么要数组? 思考:如果我想保存一个班里所有同学的姓名怎么办? 场景:如果有多个数据可以用数组保存起来,然后放到一个变量…

合并 PDF 文件的7个免费软件

PDF 合并是将所需信息转移到一个文件夹中的最佳选择,因此,您需要最好的 pdf 合并软件。 在 PDF 中复制粘贴不同的格式然后进行编辑非常耗时。因此,请查看我们的首选免费软件以合并 PDF 文件。 此列表中的工具可让您一次处理大量文件&#x…

STM32 ADC采样调试笔记

最近在搞STM32L051系列一个小MCU,要用这个去采集两路ADC作为输入。期间也碰到过一些问题,顺便记录下。 ADC采集原理不说了,主要采集电压,用数字进行细分,这样就可以知道输入电压多少了,网上也有很多相关文…

【附源码】基于SSM+Java的题库管理系统的设计与实现

基于SSMJava的题库管理系统的设计与实现 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(We…

一小时掌握:使用ScrapySharp和C#打造新闻下载器

引言 爬虫技术是指通过编程的方式,自动从互联网上获取和处理数据的技术。爬虫技术有很多应用场景,比如搜索引擎、数据分析、舆情监测、电商比价等。爬虫技术也是一门有趣的技术,可以让你发现网络上的各种有价值的信息。 本文将介绍如何使用…

Linux -- Nginx服务基础

4.1Nginx服务基础 Nginx(发音为[engine x])专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消 耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求),正因 为如此,…

ffmpeg 视频分辨率修改 质量压缩

随着手机像素的提高,拍摄视频也越来越大,10秒的视频动辄 二三十兆,这给视频传输和播放都带来了 诸多不变。一般都需要 前端或或者后端 对视频进行压缩。由于我这边前端是 H5,所以只能后端进行压缩, 采用主流压缩库采用…

bmp图像文件格式超详解

0 BMP简介 BMP(Bitmap-File)图形文件,又叫位图文件,是Windows采用的图形文件格式,在Windows环境下运行的所有图像处理软件都支持BMP图像文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。一个BMP文件由四部分组成: B…

手轮脉冲平滑处理笔记

这是一个求手脉倍率((Hw_Control.mult_ratio)与手脉脉冲计数延迟次数即累计过去n次的平均值(Hw_Control.lag_num)之间关系算法的计算过程笔记文档 1、已知 mult_ratio=1时 lag_num=10; mult_ratio=10时 lag_num=20; .mult_ratio==100时 lag_num=30; 以此类推 2、设lag_num…

【目标跟踪】多相机多目标跟踪

文章目录 前言一、计算思路二、代码三、结果 前言 单相机目标跟踪之前博客已经有过基本介绍,本篇博客主要介绍一种多相机目标跟踪的计算方法已知各相机内外参,如何计算共视区域像素投影?废话不多说,见下图。 同一时刻相机A与相机…

创建ROS模型与小机器人地图规划

1、打开自己的VM系统 2、安装小机器人的安装包,输入如下命令,回车输入密码(自己设的): sudo apt install ros-noetic-turtlebot3-simulations ros-noetic-turtlebot3-slam ros-noetic-turtlebot3-navigation 提示我之前安装过了 3、用rosla…

ansible:如何在centos 7上重新启动auditd服务得到关于依赖的错误

在我的剧本中,我有一个更新 audit.rules 的任务,然后通知应该重新启动 auditd 服务的处理程序。 task:- name: 6.6.7 - audit rules configurationtemplate: srcX/ansible/templates/auditd_rules.j2dest/etc/audit/rules.d/audit.rulesbackupyesownerr…

在线图表编辑工具Draw.io本地部署并结合内网穿透实现远程协作办公

前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软件为收费,并且因为其功能强大,导致安装需要很多的系统内存,并且是不可跨平台使用。所以,今天给…

ChatGPT | Team套餐来了,每人 25美元,你怎么看?

最近,ChatGPT 在原有的plus会员的基础上 加了一个Team套餐 价格要更贵一些 收费 每人每月 25 美元 套餐包含 Plus 中的所有内容,以及: GPT-4 和 DALLE、浏览、高级数据分析等 创建 GPT 并将其与工作区共享 用于工作区管理的管理控制台 保证不…

shrio漏洞

sudo apt install tomcat9//安装tomcat9sudo systemctl status tomcat9//查看安装状态 编辑配置文件 sudo nano /etc/tomcat9/tomcat-users.xml 编辑配置文件,设置密码 sudo systemctl restart tomcat9 重启生效 访问 Tomcat 管理页面:在浏览器中输入…

网络安全B模块(笔记详解)- 网络爬虫渗透测试

ARP协议渗透测试 1.进入渗透机场景BT5中的/root目录,完善该目录下的arp_spoof.py文件,填写该文件当中空缺的Flag1字符串,将该字符串作为Flag值(形式:Flag1字符串)提交;(arp_spoof.py脚本功能见该任务第6题) 根据缺少的发现是要time模块 Flag:time 2.进入渗透机场景B…

独享静态代理IP在海外市场调研中的独特优势

独享静态代理IP在海外市场调研中扮演着至关重要的角色,提供了一系列无可比拟的优势。独享静态代理IP的稳定性和可靠性对于长期的市场调研至关重要,它保证了连接的持续性和数据的准确性。通过这些方面的综合优势,独享静态代理IP成为海外市场调…

生成学习全景:从基础理论到GANs技术实战

本文全面探讨了生成学习的理论与实践,包括对生成学习与判别学习的比较、详细解析GANs、VAEs及自回归模型的工作原理与结构,并通过实战案例展示了GAN模型在PyTorch中的实现。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产…