Spark(Python版)零基础学习笔记(一)——快速入门哇哇小仔

由于Scala才刚刚开始学习,还是对python更为熟悉,因此在这记录一下自己的学习过程,主要内容来自于spark的官方帮助文档,这一节的地址为:

环境:Ubuntu16.04LTS,Spark2.0.1,Hadoop2.7.3,Python3.5.2,

利用sparkshell进行交互式分析

1.基础

首先打开spark与python交互的API

$cd/usr/local/spark$./bin/pysparkSpark最重要的一个概念就是RDD(ResilientDistributedDataset),弹性分布式数据集。RDD可以利用Hadoop的InputFormats创建,或者从其他RDD转换。

这里,作为入门,我们利用spark安装后文件夹中自带的README.md(此文件位置为/usr/local/spark/README.md)文件作为例子,学习如何创建一个新的RDD。

创建新的RDD:

>>>textFile=sc.textFile(“README.md”)

RDD支持两种类型的操作,actions和transformations:

actions:在数据集上运行计算后返回值

transformations:转换,从现有数据集创建一个新的数据集

RDD可以有执行一系列的动作(actions),这些动作可以返回值(values),转换(transformations),或者指向新的RDD的指针。下边学习RDD的一些简单的动作:

>>>textFile.count()#计数,返回RDD中items的个数,这里就是README.md的总行#数99>>>textFile.first()#RDD中的第一个item,这里就是文件README.md的第一行u'#ApacheSpark'注意:如果之前是从/usr/local/spark启动pyspark,然后读取README.md文件的,如果执行count语句,会出现以下错误:

py4j.protocol.Py4JJavaError:Anerroroccurredwhilecallingz:org.apache.spark.api.python.PythonRDD.collectAndServe.

:org.apache.hadoop.mapred.InvalidInputException:Inputpathdoesnotexist:hdfs://localhost:9000/user/spark/README.md

这是因为在使用相对路径时,系统默认是从hdfs://localhost:9000/目录下读取README.md文件的,但是README.md文件并不在这一目录下,所以sc.textFile()必须使用绝对路径,此时代码修改为:

>>>textFile=sc.textFile(“file:///usr/local/spark/README.md”)99下边尝试使用一个转换(transformation)。例如,使用filter这一转换返回一个新的RDD,这些RDD中的items都含有“Spark”字符串。

>>>linesWithSpark=textFile.filter(lambdaline:“Spark”inline)我们还可以将actions和transformation链接起来:

>>>textFile.filter(lambdaline:“Spark”inline).count()#有多好行含有“Spark”这一字符串19

2.更多的RDD操作

利用RDD的动作和转换能够完成很多复杂的计算。例如,我们希望找到含有最后单词的一句话:

>>>textFile.map(lambdaline:len(line.split())).reduce(lambdaa,b:aif(a>b)elseb)22这个语句中,map函数将len(line.split())这一语句在所有line上执行,返回每个line所含有的单词个数,也就是将line都map到一个整数值,然后创建一个新的RDD。然后调用reduce,找到最大值。map和reduce函数里的参数是python中的匿名函数(lambda),事实上,我们这里也可以传递python中更顶层的函数。比如,我们先定义一个比较大小的函数,这样我们的代码会更容易理解:

>>>defmax(a,b):...ifa>b:...returna...else:...returnb...>>>textFile.map(lambdaline:len(line.split())).reduce(max)22Hadoop掀起了MapReduce的热潮。在spark中,能够更加容易的实现MapReduce

>>>wordCounts=textFile.flatMap(lambdaline:line.split()).map(lambdaword:(word,1)).reduceByKey(lambdaa,b:a+b)上述语句中,利用flatMap,map和reduceByKey三个转换,计算文件README.md中每个单词出现的个数,并返回一个新的RDD,每个item的格式为(string,int),即单词和对应的出现次数。其中,

flatMap(func):与map相似,但是每个输入的item能够被map到0个或者更多的输出items上,也就是说func的返回值应当是一个Seq,而不是一个单独的item,上述语句中,匿名函数返回的就是一句话中所含的每个单词

reduceByKey(func):可以作用于使用“键-值”(K,V)形式存储的数据集上并返回一组新的数据集(K,V),其中,每个键的值为聚合使用func操作的结果,这里相当于python中字典的含义。上述语句中,相当于当某个单词出现一次时,就在这个单词的出现次数上加1,每个单词就是一个Key,reducByKey中的匿名函数计算单词的出现次数。

要收集上述语句的计算结果,可以使用collect这一动作:

>>>wordCounts.collect()[(u'when',1),(u'R,',1),(u'including',3),(u'computation',1),...]

3.缓存Caching

Spark也支持将数据集存入集群范围的内存缓存中。这对于需要进行重复访问的数据非常有用,比如我们需要在一个小的数据集中执行查询操作,或者需要执行一个迭代算法(例如PageRank)。下面,利用之前命令中得到的linesWithSpark数据集,演示缓存这一操作过程:

>>>linesWithSpark.cache()PythonRDD[26]atRDDatPythonRDD.scala:48>>>linesWithSpark.count()19>>>linesWithSpark.count()19利用Spark去缓存一个100行的文件可能并没什么意义。但是有趣的是,这一系列的操作可以用于非常大的数据集上,甚至含有成千上万的节点的数据集。

4.自含式应用程序(self-containedapplications)

假设我们希望利用SparkAPI写一个自含式应用程序,我们可以利用Scala,Java或者Python完成。

下边,简单介绍一下怎样利用PythonAPI(PySpark)写一个应用程序,命名为SimpleApp.py.

在spark所在目录下输入:

./bin/spark-submit--masterlocal[4]SimpleApp.py输出为:

Lineswitha:61,Lineswithb:27

此外,Spark自带很多例子,可以在spark目录下输入下列指令查看:

#ForScalaandJava,userun-example:./bin/run-exampleSparkPi#ForPythonexamples,usespark-submitdirectly:./bin/spark-submitexamples/src/main/python/pi.py#ForRexamples,usespark-submitdirectly:./bin/spark-submitexamples/src/main/r/dataframe.R

THE END
1.[Spark]一Spark基础入门[Spark]一、Spark基础入门 G:\Bigdata\4.spark\2024最新版Spark视频教程 一、Spark基础入门 1. Spark概述 1.1什么是Spark 回顾:Hadoop主要解决,海量数据的存储和海量数据的分析计算。 Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 Hadoop与Spark历史https://blog.csdn.net/weixin_44428807/article/details/139758282
2.Spark基础知识点在spark 的基础上,spark还提供了包括spark sql, spark streaming, Mlib及GraphX在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。 运行方式 spark 支持多种运行方式,包含在hadoop 和Mesos上,也支持Standalone的独立运行模式,同时也可以运行在云Kubernetes (Spark 2.3开始支持)上。 http://www.wjks.cn/news/56706.html
3.如何开始学习使用Spark?要开始学习使用Spark,你需要掌握其基础概念、组件和运行模式。Spark是一个高速、通用和可扩展的大数据处理框架,广泛应用于批处理、交互式查询、实时流处理、机器学习和图计算[^1^]。以下是学习使用Spark的详细指南: 了解基础 掌握编程语言知识:Spark支持多种编程语言,如Scala、Python和Java[^1^]。选择一种你熟悉的语https://developer.aliyun.com/article/1601324
4.Spark编程基础(Scala版)本章节将讲解 Spark 简介、安装、运行架构、RDD 的设计与运行原理、部署模式。 2-1 概述 2-2 Spark生态系统 2-3 Spark运行架构 2-4 Spark 的部署方式 第3章 Scala 语言基础 本章节将介绍 Scala 语言基础语法。 3-1 Scala 语言概述 3-2 Scala 基础知识 https://m.educoder.net/paths/tqb74pxe
5.Spark概述代码1.1 importorg.apache.spark.{SparkConf,SparkContext}//建立的WordCount对象,以及定义main函数objectWordCount{defmain(args:Array[String]):Unit={valconf=newSparkConf().setMaster("local").setAppName("wordcount")valsc=newSparkContext(conf)vallines=sc.textFile("文件路径")valwords=lines.flatMap(linehttps://aibigdata.csu.edu.cn/ch1_spark_gaishu.html
6.spark从入门到实战spark基础知识spark从入门到实战 spark基础知识 目录 基础 概述 分工 作业提交流程 Executor 共享变量 Broadcast Variable(广播变量) Accumulator(累加变量) 内存管理 相关配置 堆内内存 堆外内存 Execution 内存和 Storage 内存动态调整 Task之间内存分布 Spark Core spark的shufflehttps://blog.51cto.com/u_16213725/7762628
7.零基础入门Spark快速构建 Spark 核心知识体系 Spark 三大计算场景案例实操 逐句注释的保姆级代码讲解 在故事中搞懂 Spark 开发实战技巧 课程介绍 说到学习 Spark,如果你对“他会结合自己这些年学习、应用和实战 Spark 的丰富经验,为你梳理一套零基础入门 Spark 的“三步走”方法论:熟悉Spark 开发 API 与常用算子、吃透 Spark https://time.geekbang.org/column/intro/100090001
8.Hudi核心知识点详解——快速入门数据湖袋鼠社区大数据大厂之 Hudi 数据湖框架性能提升:高效处理大数据变更 技术共享?数栈君发表了文章 ? 0 个评论 ? 135 次浏览 ? 2024-10-09 15:26 在之前对大数据技术的探索中,我们已经了解到大数据领域不断发展,各种技术和框架应运而生,以满足日益增长的数据处理需求。从之前讨论过的相关大数据技术和框架,https://www.dtstack.com/bbs/topic/8500
9.Spark相关知识资源汇总winway'sblogSpark Streaming使用入门 Spark常用算子 Scala 教程 Spark scala使用案例 Spark面试题 其他零散知识点 很久没有使用Spark,忘得差不过了。最近重新复习了一下,查阅的相关资料整理如下。 Spark架构原理 一、Spark快速入门 30分钟理解Spark的基本原理 大数据基础:Spark 工作原理及基础概念 https://winway.github.io/2024/05/10/spark-resource-summary/
10.《Spark最佳实践》试读:6.1SparkStreaming基础知识Spark Streaming计算支持Scala、Java、Python语言,暂时不支持R。 6.1 Spark Streaming基础知识 本节通过一个简单示例介绍如何开发Spark流式计算程序。 6.1.1 入门简单示例 在介绍完整的Spark流式计算之前,我们先给出一个最简单的示例:Spark Streaming版本的WordCount。使用Linux下的终端工具netcat(简称nc)启动一个TCP服务https://book.douban.com/reading/37743121/
11.clickhouse入门基础知识了解ClickHouse经常会被拿来与其他的分析型数据库作对比,比如Vertica、SparkSQL、Hive和Elasticsearch等,它与这些数据库确实存在许多相似之处。例如,它们都可以支撑海量数据的查询场景,都拥有分布式架构,都支持列存、数据分片、计算下推等特性。这其实也侧面说明了ClickHouse在设计上确实吸取了各路奇技淫巧。与其他数据库相比,https://www.jianshu.com/p/1f2d517744c3
12.SparkSQL入门与实践指南pdfepubmobitxt电子书下载2024本书共分为四篇:入门篇、基础篇、实践篇、调优篇,所有代码均采用简洁而优雅的Scala语言编写,Spark框架也是使用Scala语言编写的。 第一部分 入门篇(第1、2章) 第1章简要介绍Spark的诞生、Spark SQL的发展历史以及Spark SQL的用处等内容,使读者快速了解Spark SQL背景知识,为以后的学习奠定基础。 第2章通过讲解https://windowsfront.com/books/12319813
13.基础知识·asD基础知识RDD SparkContext,Spark最重要的API,用户逻辑与Spark集群主要的交互接口,它会和Cluster Master交互,包括向它申请计算资源等。 Resilient Distributed Datasets,弹性分布式数据集,只读分区记录的集合,Spark对所处理数据的基本抽象。 参考:Spark基本概念快速入门 点赞 您需要登录后才可以点赞https://www.kancloud.cn/asdj07/asd123/1035960
14.史上快速入门教程敬伟PS教程(A基础篇)A01初识PS15:09 C4D-1.2.C4D初识及基础操 1496播放 08:37 Spark基础入门-第七章-7.3 567播放 08:27 【AI系统教程】AI常用小工具(一 1245播放 07:55 【AI基础入门】26.实时上色工具 1067播放 03:34 IBM2.2Jupyter入门 5564播放 03:40 Mac入门系列-第三集 了解Doc 10.9万播放 01:https://open.163.com/newview/movie/free?pid=LEV1GNL3O
15.Kafka入门到精通学习路线图技术文章滴石it网Kafka是一个分布式流式处理平台,被广泛应用于大规模数据处理和实时数据流分析的场景中。以下是一个从入门到精通的学习路线图,帮助你系统地学习和掌握Kafka的相关技术。 1. 学习Kafka的概念和基础知识: – 了解Kafka的起源和背景,掌握Kafka的基本概念和术语,如消息、主题、分区、生产者、消费者等。 https://www.soft1188.com/javabk/6418.html
16.Spark快速大数据分析20240516123910.pdf1.5Spark的版本发布 1.6Spark的存储层次 第2章Spark下载与入门 2.1下载Spark 2.2Spark中PythonScala的hell 2.3Spark核心概念简介 2.4独立应用 2.4.1初始化SparkContext 2.4.2构建独立应用 2.5总结 第3章RDD编程 3.1RDD基础 3.2创建RDD 3.3RDD操作 3.3.1转化操作 3.3.2行动操作 333惰性求值 3.4向Spark传递函数 3.4.https://m.book118.com/html/2024/0516/7025054055006110.shtm
17.大数据Hadoop简单入门指南是一个快速且通用的集群计算系统,具备内存数据处理能力。Spark提供统一的分布式数据处理API,支持批量处理、迭代算法、交互式查询和流式数据处理。通过在内存中缓存数据并以分布式和并行的方式执行计算,Spark在许多场景中优于MapReduce。 示例用途:Spark可用于机器学习任务、实时数据处理、交互式数据分析和图处理。 http://www.360doc.com/content/24/0112/07/50382475_1110784560.shtml
18.Scala开发快速入门epubpdfmobitxt电子书下载2024Spark、Kafka等是大数据技术框架中的明星,Scala语言已经通过了工业界的检验,学习Scala语言为学习这些框架的设计原理打下坚实的基础,为以后参与开源、学习工业界最先进的大数据技术架构的优秀思想打下了坚实的基础。 如何阅读本书 本书涵盖三大主要部分: (1)Scala语言基础篇,主要介绍Scala语言入门基础知识、变量的定义、程https://book.tinynews.org/books/12026904
19.Windows8应用开发快速入门系列课程MicrosoftLearnLearn 发现 产品文档 开发语言 主题 登录 下载PDF 使用英语阅读 保存 添加到集合 添加到计划 通过 Facebookx.com 共享LinkedIn电子邮件 打印 项目 2021/10/20 反馈https://msdn.microsoft.com/zh-cn/jj878422