本文作为Data Science Blogathon的一部分发表。
介绍
在本文中,我们将向您介绍大数据生态系统以及Apache Spark在大数据中的作用。我们还将介绍分布式数据库系统,这是大数据的主干。
在当今世界,数据是燃料。几乎每个电子设备都收集用于商业目的的数据。想象一下我们如何处理大量数据。当然,我们需要强大的计算机来处理大量数据,但这是不现实的。
对于单个计算机来说,处理PB数据是不切实际的;因此,大数据技术应运而生。
大数据是我们使用不同的大数据工具和云系统处理许多数据的领域。
处理大数据
大数据处理需要并行计算,因为在单个或非常高端的计算机中加载PB数据是不可能的。这种使用并行计算的技术称为分布式计算。
分布式系统中的单个计算机称为节点,每个节点使用其计算资源。
主节点负责在各个节点之间分配字负载,如果工作节点发生故障,它将停止向故障节点传递负载。
集群是节点的集合,包括同步的主节点。
大数据生态系统:
许多开源工具构成了大数据生态系统。开源工具通常用于大数据,因为这些工具更透明,使用更自由,因此无需担心数据泄漏。
流行的大数据开源工具有Apache Spark、Hadoop、Map Reduce、Hive、Impala等。
工具类别:
-
编程工具
-
商业智能工具
-
分析和可视化
-
数据库(NoSql和SQL)
-
云技术
-
数据技术
Hadoop生态系统:
Hadoop生态系统由Apache项目下的各种开源工具组成。这些工具专为大数据工作负载而设计。所有组件都在Hadoop生态系统中独立工作。
1.摄取数据( Flume , Sqoop)
2.访问数据( Impala, Hue)
3.处理和分析数据 (Pig & Hive, Spark)
4.存储数据(HDFS、HBase)
什么是Apache Spark?
Spark是一种分布式内存数据处理工具。Spark是Apache Map Reduce的替代品。
Spark是Apache Map Reduce的强大替代品。由于内存计算,Spark比Map reduce更快,因此它具有很高的能力,并且总是能够处理大量数据。
内存计算利用单个系统ram而不是磁盘进行计算,这使得spark功能强大。
Apache Spark的主要功能:
1.快速处理
我们已经讨论了使用内存计算对大数据处理的影响。由于其计算能力,Spark一直是大数据处理的唯一选择。
2.支持各种API
Spark支持JAVA、PYTHON和SCALA编程语言。Spark是在Scala上编写的,它支持其他编程语言API。
Spark核心使用SCALA处理作业。
Spark核心是容错的,所以如果任何节点发生故障,处理将不会停止。
3.强大的库
Spark还支持各种第三方库。Spark为特定任务提供了广泛的库。
spark中的ML库是为机器学习任务本地构建的。它还支持流式机器学习管道。
4.兼容性和部署
使用Spark的最大优点是它不需要大量繁琐的依赖关系。Spark可以在任何云集群上运行,并且可以轻松扩展。Spark在Kubernetes、Mesos、Hadoop和其他云笔记本上运行。
5.实时处理
Spark还支持传统的Hadoop Map Reduce,这导致Spark处理HDFS文件格式的数据。Spark可以轻松地在HDFS集群上工作,而不会产生任何依赖冲突。
Apache Spark架构

Apache Spark核心引擎由3个组件组成
-
Spark驱动器
-
执行人
-
群集管理器
Spark驱动程序负责Spark上下文(我们编写的代码)。它转换spark上下文并将信息发送到集群管理器,后者创建集群,执行器处理工作节点并为它们分配任务。
使用Python开始使用Spark
Spark应用程序可以用Python编写。Python在后端使用py4j来处理java代码。
目标
-
设置Pyspark
-
创建上下文和会话
-
Spark RDD
-
转变和行动
-
设置Pyspark
Pyspark在为python构建的spark API中。它允许我们在Python中创建spark应用程序。它在后端使用py4j。
Spark可以在任何python环境中本地运行。我们还可以在云笔记本上构建spark集群。用于在数据块中运行spark的流行python环境,提供了一些可供使用的数据库。
以下是免费在数据块上运行spark集群的指南。
正在安装所需的软件包。
为了在python中运行spark,我们需要pyspark模块和FindPark。
!pip install pyspark
!pip install findspark
Findspark它为当前Python配置文件生成启动文件,并准备spark环境。查找spark查找spark启动文件。
import findspark
findspark.init()
Spark会话和上下文
Spark会话Spark会话跟踪我们的应用程序。在使用Spark并加载数据之前,必须创建Spark会话。
SparkContext Spark上下文是Spark应用程序的入口点,它还包含了一些RDD函数,如parallelize()。
Spark会话和上下文
Spark会话Spark会话跟踪我们的应用程序。在使用Spark并加载数据之前,必须创建Spark会话。
SparkContext Spark上下文是Spark应用程序的入口点,它还包含了一些RDD函数,如parallelize()。
# Initialization spark context class
sc = SparkContext()
# Create spark session
spark = SparkSession
.builder
.appName("Application name ")
.config("spark.some.config.option", "somevalue")
.getOrCreate()
如果命名会话不存在,getOrCreate将创建一个新会话。

Spark RDDs
Spark RDD(弹性分布式数据集)是Spark上的基本数据结构,Spark是一个不可变的分布式对象。RDD非常快,Spark的核心引擎支持RDD。
Spark中的RDD只能通过并行化或引用其他数据集来创建。
RDD以分布式方式工作,这意味着RDD中的数据集被划分为逻辑分区,由集群中的不同分配节点计算。Spark RDD是容错的;在spark中,其他数据集基于RDD。
RDD接受以下类型的数据类型 —
-
拼花、文本、Hadoop输入、Avro、序列文件等。
-
Amazon S3、Cassandra、HBase、HDFS等。
在RDD中,数据分布在多个节点上,使其以分布式方式工作。
RDD支持延迟计算,这意味着它在需要值之前不会计算任何东西。
- sc.parallelize 将一个系列转换为一个RDD。
串行到RDD转换。
data = range(1,30)
# print first element of iterator
print(data[0])
len(data)
xRDD = sc.parallelize(data, 5)
RDD转换
转换是计算必须遵循的规则。RDD是惰性计算,表示在调用操作之前不会执行任何计算。
此转换将存储为一组规则,并在操作阶段实现。
# Reduces each number by 2
sRDD = xrangeRDD.map(lambda x: x-2)
# selects all number less than 20
filteredRDD = sRDD.filter(lambda x : x<20)
RDD动作
动作是实际的计算过程。应用转换后,我们需要在需要值时调用操作。它有助于数据完整性。
打印(filtereddd.collect())
filtereddd.count()
输出:

结论
在这篇文章中,我们讨论了大数据生态系统以及大数据生态圈所包含的各种工具。
我们讨论了分布式系统的作用以及Spark如何在大数据中工作。
Spark架构包含驱动程序节点、上下文读取器和节点管理器。Spark以分布式方式工作,与Hadoop相同,但与Hadop类似,它使用内存计算而不是磁盘。
我们讨论了RDD、转换和操作。
-
Spark RDD不能修改,只能更换。
-
Spark RDD是延迟评估的,这有助于数据完整性,并且不会让数据损坏。
-
Spark支持构建在RDD之上的分布式SQL
-
Spark支持各种机器学习模型,包括CNN和NLP。
感谢阅读本文,本文中显示的媒体并非Analytics Vidhya所有,由作者自行决定使用。
原文标题:Introduction to Apache Spark and its Datasets
原文作者:Abhishek Jaiswal
原文链接:https://www.analyticsvidhya.com/blog/2022/08/introduction-to-on-apache-spark-and-its-datasets/




