Apache Spark与大数据生态系统

在当今世界,数据量的增长速度令人瞩目。这种增长为众多公司提供了洞察数据的机会,而这些信息被用来促进业务增长。智能助手如Siri、Google Home和Alexa等,都利用大数据、机器学习和物联网技术来收集数据并回答问题。由于数据驱动技术的高速增长,正在生成越来越多的数据,需要处理的数据量达到了拍字节级别。对于单个计算机来说,处理如此庞大的数据量并非易事,因此需要多台计算机并行处理这些数据,这就是大数据背后的理念。

大数据的处理

处理大量数据需要多台计算机并行工作。由于无法将大量数据加载到单个计算机上,这就是所谓的分布式计算。换句话说,处理任务被分割并在各自的计算资源上独立运行。如果任何一台计算机或节点失败或宕机,其他节点会接管剩余的工作。一个集群是一个分布式系统(由多个节点组成的集合),它们协同工作以完成特定任务。大数据生态系统由许多开源工具组成,例如Hadoop和Apache Spark大数据工具,以及Hive等,它们共同构成了大数据生态系统。由于它们可以免费使用且透明度高,因此非常受欢迎。

大数据生态系统

大数据生态系统包括各种开源和付费工具,它们都为特定目的而设计。大数据需要云计算、数据处理工具、数据库管理工具和业务智能到编程语言。所需的工具可以分为以下几类:

  • 编程工具
  • 商业智能工具
  • 数据库(NoSql和SQL)
  • 分析和可视化
  • 数据技术
  • 云技术

Hadoop生态系统

Hadoop生态系统由各种开源工具组成,这些工具都属于Hadoop项目。所有这些组件都相互支持。

  • 数据摄入(Flume、Sqoop)
  • 数据访问(Impala、Hue)
  • 数据处理和分析(Pig & Hive)
  • 数据存储(HDFS、HBase)

为什么选择Apache Spark?

像腾讯、Uber、Netflix、Google和阿里巴巴这样的大型科技公司都在运行Apache Spark操作。Spark是Apache Map-Reduce的强大替代品。与Hadoop相比,Spark在计算方面更强大、更快,它具有高可访问性,并且能够处理分布式系统中的大量数据。内存中计算(在RAM而不是磁盘上进行计算)使Spark在分布式数据处理方面比Map-Reduce运行得更快。

Apache Spark的顶级特性

以下是使Apache Spark广受欢迎和优越的顶级特性。

  1. 快速处理

    Spark在内存中处理数据的速度比Map-Reduce快100倍,在Hadoop集群中快10倍。Spark已经创下了磁盘上最快数据排序的世界纪录。
  2. 支持多种API

    Spark提供多种编程语言API,这意味着Spark应用程序可以用任何语言编写,例如Scala、Java、Python、R。Spark原生是用Scala编写的。Spark Core执行大规模分布式和并行数据处理。Spark Core具有容错性,这意味着如果任何节点宕机,处理不会停止。
  3. 强大的库

    Spark还支持Map-Reduce函数。Spark在分布式数据框架和SQL上工作。ML-lib是随Spark一起提供的丰富的机器学习包。Spark Streaming使实时数据处理和分析成为可能。
  4. 实时处理

    Spark还支持传统的MapReduce,能够处理来自Hadoop HDFS文件的数据。Spark可以在没有任何冲突的情况下在HDFS集群上工作。
  5. 部署和兼容性

    Spark能够在任何云笔记本上运行,而不需要许多依赖项。Spark可以在Kubernetes、Mesos、Hadoop和云笔记本上运行。

Apache Spark架构

任何Spark引擎都包含三个高级组件:

  • Spark Driver
  • Cluster Manager
  • Executors

使用Python开始Spark

Spark原生是用Scala编程语言编写的,它编译成Java。可以使用py4j与JVM通信。这使得使用Python在Spark上工作成为可能。因此,可以轻松地用Python创建Spark应用程序。在后端,它将使用py4j。

目标

  • 设置Pyspark
  • 上下文和会话
  • Spark RDD
  • 转换和动作

要运行Spark,需要一个Python环境,它可以是任何云笔记本或本地Python环境,但强烈建议创建一个Databricks Spark集群,这是一个关于如何在Databricks上免费启动Spark集群的指南。

PySpark

它是一个Spark API,允许用Spark创建应用程序。在本文中,将使用PySpark在Spark上工作。

安装所需包

在Python中设置Spark需要以下库。

!pip install pyspark !pip install findspark

Findspark在当前IPython配置文件中添加一个启动文件,并为Python中的Spark创建一个环境。

import findspark findspark.init()

创建Spark上下文和Spark会话

Spark会话是处理Spark数据框架和SQL所需的。SparkContext是Spark应用程序的入口点,它还包含创建RDD(弹性分布式数据库)的函数,如parallelize()。

# 初始化spark上下文类 sc = SparkContext() # 创建spark会话 spark = SparkSession .builder .appName("Python Spark DataFrames basic example") .config("spark.some.config.option", "some-value") .getOrCreate()

getOrCreate创建一个新会话,如果指定名称的会话不存在。

Spark会话

会话成功创建后,可以通过运行spark命令来验证,它将返回正在运行的会话的详细信息。

spark

SparkRDDs

SparkRDDs是Spark中的原始分布式数据抽象,应用函数式编程概念来处理RDDs。RDD接受多种类型的文件,包括:

  • 序列文件、Avro、Parquet、文本、Hadoop输入等。
  • Cassandra、HBase、Amazon S3、HDFS等。
# 将每个数字减少1 sRDD = xrangeRDD.map(lambda x: x-1) # 选择所有小于10的数字 filteredRDD = sRDD.filter(lambda x : x<10) print(filteredRDD.collect()) filteredRDD.count()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485