暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Apache Spark及其数据集简介

原创 eternity 2022-08-23
440

本文作为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架构

image.png

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将创建一个新会话。

image.png

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()

输出:
image.png

结论

在这篇文章中,我们讨论了大数据生态系统以及大数据生态圈所包含的各种工具。

我们讨论了分布式系统的作用以及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/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论