在当今世界,数据已成为推动业务发展的重要资源。几乎所有的电子设备都在收集数据,这些数据被用于商业目的。面对海量数据,自然需要强大的计算机来处理这些数据,但在实际操作中,单台计算机处理PB级别的数据是不切实际的。因此,大数据技术应运而生,它们允许使用不同的大数据工具和云系统来处理大量数据。
大数据处理需要并行计算,因为将PB级别的数据加载到单个或高端计算机上是不可能的。这种使用并行计算的技术被称为分布式计算。在分布式系统中,单个计算机被称为节点,每个节点都使用其计算资源。主节点负责将工作负载分配给各个节点,如果工作节点失败,它将停止向失败的节点分配负载。集群是包括主节点在内的节点集合,它们同步工作。
大数据生态系统由许多开源工具组成。这些工具通常用于大数据,因为它们更透明且免费使用,因此不必担心数据泄露。流行的大数据开源工具包括Apache Spark、Hadoop、Map-Reduce、Hive、Impala等。这些工具可以分为编程工具、商业智能工具、分析和可视化工具、数据库(NoSQL和SQL)、云技术和数据技术等类别。
Hadoop生态系统由多种开源工具组成,这些工具属于Apache项目。这些工具专为大数据工作负载而设计,所有组件在Hadoop生态系统中相互依赖地工作。数据摄入工具包括Flume和Sqoop,数据访问工具包括Impala和Hue,数据处理和分析工具包括Pig、Hive和Spark,数据存储工具包括HDFS和HBase。
Apache Spark是一个分布式内存数据处理器,是Apache Map-Reduce的替代品。由于内存计算,Spark比Map-Reduce更快,使其成为处理大数据量的理想选择。内存计算利用单个系统的RAM进行计算,而不是磁盘,这使得Spark非常强大。
Apache Spark的主要特点包括快速处理、支持多种API、强大的库、兼容性和部署以及实时处理。Spark支持JAVA、PYTHON和SCALA编程语言,并且核心是容错的,即使某个节点失败,处理也不会停止。Spark支持各种第三方库,例如ML-lib用于机器学习任务,并且支持流式机器学习管道。使用Spark的最大优势是它不需要复杂的依赖关系,可以在任何云集群上运行,并且可以轻松扩展。Spark可以在Kubernetes、Mesos、Hadoop等云笔记本上运行。
Apache Spark架构的核心引擎由三个组件组成:Spark驱动程序、执行器和集群管理器。Spark驱动程序负责Spark上下文(编写的代码),它将Spark上下文翻译并发送给集群管理器,集群管理器创建集群,执行器处理工作节点并分配任务。
使用Python开始使用Spark,Python使用py4j在后端处理Java代码。目标包括设置Pyspark、创建上下文和会话、Spark RDD、转换和动作。Pyspark是为Python构建的Spark API,它允许用Python创建Spark应用程序。它使用py4j在后端。Spark可以原生地在任何Python环境中运行,还可以在云笔记本上构建Spark集群。运行Spark的流行Python环境包括Databricks,它提供了一些数据库来处理。
以下是在Databricks上免费运行Spark集群的指南。安装所需的包,运行Python中的Spark,需要pyspark模块和findspark。使用pip安装pyspark和findspark。Findspark生成启动文件到当前Python配置文件,并准备Spark环境。Findspark定位Spark启动文件。
Spark会话和上下文:Spark会话跟踪应用程序。在处理Spark和加载数据之前,必须创建Spark会话。Spark上下文是Spark应用程序的入口点,它还包含一些RDD函数,如parallelize()。
Spark RDD(弹性分布式数据集)是Spark中的基本数据结构,是一个不可变的分布式对象。RDDs非常快速,Spark核心引擎支持RDDs。Spark中的RDD只能通过并行化或其他数据集来创建。RDD以分布式方式工作,意味着RDD中的数据集被划分为逻辑分区,由集群分配的不同节点计算。Spark RDDs是容错的;在Spark中,其他数据集都是基于RDDs的。
# 将每个数字减少2
sRDD = xrangeRDD.map(lambda x: x-2)
# 选择所有小于20的数字
filteredRDD = sRDD.filter(lambda x : x<20)
print(filteredRDD.collect())
filteredRDD.count()