frame的用法,框架frame的主要作用
PySpark和数据帧概述1 py spark和数据帧概述1.1 spark概述1.2 spark和数据帧的生成1。基于rdd使用toDF2。阅读本地文件蜂巢表4熊猫。数据帧转换1.3火花。数据帧转换1.3
本文介绍了1PySpark和数据框的销售预测。
2系列:PySpark时间序列数据的统计描述、分布特征和内在特征
3篇:缺陷值的填充和异常值的处理
4系列:时间系列特征工程
5系列:功能选择
6系列:简单预测模型
7系列:线性回归和广义线性模型
8篇:机器学习参数的调整方法
9篇:销售预测建模常用的损失函数和模型评价指标
1 py Spark和数据帧概述与MapReduce等其他大数据处理平台相比,Apache Spark有很多优势。其中两个突出的优势是高速运算和高速写入能力。Spark engine可以执行更多的公共有向图(DAG)来获得比Hadoop平台更好的批处理性能。Apache Spark具有内存处理能力,并使用一种新的、灵活的分布式数据集(RDD)数据提取方法。这允许Apache Spark执行高级迭代计算和响应编程,从而扩展了容错能力。此外,Apache Spark可以用几行简单的代码简化复杂的任务,从而使交互式数据挖掘和数据处理更加容易。
在零售预测领域,销售回单数据往往高达千万件,学习单机难度很大。需要使用大数据工具——Spark对模型进行分布式训练。
考虑到数据挖掘和分析师,因为大家比较熟悉的编程语言是Python,所以本章解释的是Spark ——PySpark的Python版本。本节首先介绍DataFrame、ML库等必要的基础知识,后续章节给出基于Spark机器学习的特征生成/特征选择/超参数优化和机器学习销量预测算法。
1.1 Spark概述Spark是一个快速通用的分布式计算平台1.1 Spark核心和框架构建在Scala之上,为Scala、Java、Python和R语言提供API。用户创建的APP应用可以充分利用Scala或Python语言实时交互创作的优势。除了支持多种语言,它还提供80个高级API。包括各种数据源的存储、读取和计算,成熟类库的支持,多种部署模式。用户可以简单灵活地构建APP应用。Spark目前提供分布式机器学习和数据挖掘工具包,包括为并行计算设计的常见高质量、可扩展的算法计算任务。一般机器学习算法的模型是迭代的,这和Spark的设计目标是一致的。总的来说,目前市场上流行的并行计算架构有很多,Spark是为数不多的能够兼顾速度、可扩展性、内存处理和容错性,并提供丰富灵活的API的大数据并行计算架构。
Spark对大数据的处理有以下优势:
1.计算速度快
2.大数据的分布式并行处理
3.机器学习模块紧密结合,从数据读取、计算到存储,集成求解。
4.灵活,支持多数据源,可以使用多种语言,支持自定义udf函数。
在正式介绍Spark机器学习之前,我们先来回顾一下Spark分布式计算架构的原理。
从图1的Spark架构图可以看出,Spark的运行过程如下:
当用户程序创建SparkContext时,它连接到集群资源管理器,后者将计算资源分配给用户程序并启动执行器。
Dirver将计算程序分成不同的执行阶段和多个任务,然后将任务发送给执行者;
执行器执行任务,向驱动程序报告运行状态,并报告集群资源管理器的当前使用情况。
3558 www.Sina.com/:是标准模式下的主节点,控制整个集群并监视工作节点。在YARN模式下,资源管理器Cluster Manager(Master):从节点负责控制计算节点,启动执行程序或驱动程序。http://www.Sina.com/:用于执行应用程序的main(函数), http://www.Sina.com/:执行器是用于worker节点中给定应用程序的进程。
在这里,Spark SQL主要用于处理结构化数据。
,MLlib是Spark的机器学习库,这些都是本章后面要讲解的重点。
1.2火花的产生。DataFrame从spark 2.0开始,Spark机器学习API是Spark。基于dataframe的ML,而之前基于rdd的Spark。MLlib已进入维护模式,不会更新任何新功能。火花。基于DataFrame的ML是对RDD的进一步封装,也是一个更强大更方便的机器学习API。对于习惯了sklearn等Python机器学习库的读者来说,ML使用起来会更加自然。
火花。SQL是Spark的子模块,主要用于操作结构化数据,使SQL查询和Spark程序无缝运行,支持数百种外部数据源,包括Hive、Avro、Parquet、ORC、JSON和JDBC等
为了更好地支持和处理结构化数据,Spark SQL提供了一种新的数据结构DataFrame。DataFrame是由列组成的数据集,有明确的Scheme结构,即列名和列字段类型信息。它在概念上相当于关系数据库中的表或Python/R语言中的数据框。它的主要优点是火花发动机从一开始就提供了它的性能优化。如果数据是结构化或半结构化的,出于性能原因,应该首选DataFrame。
以上介绍了Spark的由来。DataFrame,那么如何在Spark中获取一个数据。数据帧格式?其实就是用Spark读取数据的过程。接下来介绍几种常见的数据读取方法,并说明每种数据读取方法的要点。
1.使用来自pyspark的toDF导入基于RDD的SparkConf,SparkContextfrom pyspark.sql导入Rowconf=SparkConf()。setMaster(local )。set appname( My App )sc=spark context(conf=conf)df=sc . parallelize([\ Row(name=笨天空,age=5,height=80),\ Row(name=笨天空,age=5,height=80),\ Row(name=笨天空,age=10,height=80)]。Bigint )、( height 、 bigint )、( name 、 string)]看df类型Type(df)# class py spark . SQL . data frame 。你可以考虑火花。DataFrame作为关系数据表,并在其上执行类似于SQL的操作。不同于平时构建SQL表时需要指定数据类型,Spark。DataFrame新建时不需要指定数据类型。这时候自动推断出数据列的类型,这也是它的强项。
2.从py spark . SQL import spark session spark=spark session . builder \主(本地)\。Appname(测试创建数据框)\。config( spark . some . config . option , some-value) \。getor create()df=spark . read . CSV( python/test _ spark/ts _ dataset . CSV )。同样,您也可以读取parquet/json文件。
Df _ parquet=spark.read.parquet( . ))df _ JSON=spark . read . format( JSON )。加载( python/test _ spark/ts _ dataset . JSON )以上两种方式,第一种是在Spark1.x版本中使用RDD作为主API的方式,第二种是从spark2.x开始的方式,封装了SparkContext、SparkConf、sqlContext等函数,为用户提供统一的界面和更高级、更抽象的使用Spark各种功能的方式。
需要强调的是,通过session SparkSession读取的数据类型是DataFrame,第一个需要在RDD的基础上由toDF转换。如果目前读者使用的spark版本在2.0以上,推荐第二种方法。
3从py spark.sql导入sparksessionspark=sparksession读取HIVE表。\ builder()。\ config( spark . SQL . cross join . enabled , true )。\ config( spark . SQL . execution . arrow . enabled , true )。\ enableHiveSupport()。\ getor create()df=spark . SQL( select reg param,fitIntercept,elastic net param from temp . model _ best _ param )这种类型类似于直接读取上面的本地文件。创建Spark任务时,默认支持Hive,可以直接访问Hive支持的现有存储格式。解释Apache Hive是Hadoop上的一个通用结构化数据源,它支持包括HDFS在内的各种存储系统上的表。由于实际工作中使用spark.sql读取数据操作的机会比较多,也是spark最核心的组件之一,所以这里重点介绍一些spark.sql,和Spark的其他组件一样,有必要介绍一下Spark。SQL在使用的时候提前,但是没有必要依赖大量的包。如果需要连接Spark。SQL到一个已部署的Hive,您需要将hive-site.xml复制到Spark的配置文件目录。这部分请参考网络上的其他教程。上面代码中对enableHiveSupport的调用使得SparkSession支持Hive。如果是Spark版,参考以下方式。
从pyspark.sql导入HiveContext hivectx=HiveContext(sc)data=hivectx . SQL( select reg param,fitIntercept,elastic net param from temp . model _ best _ para )4熊猫。Dataframe转换既然用python进行数据处理,尤其是结构化数据,熊猫肯定是无法避免的。所以在学习和工作中,经常会有转换加工熊猫的诉求。DataFrame将数据转换成spark.dataframe. Spark。DataFrame在设计之初就已经考虑到了这个问题,所以实现方法相当简单。
将panda导入为pddf=PD . read _ CSV( python/test _ spark/ts _ dataset . CSV )# Convert panda。data frame into-spark.dataframe spark _ df=Spark . created data frame(df)#将Spark . data frame转换成-pandas . data frame PD _ df=Spark _ df . top andas()以上转换Spark的过程。data frame intopandas . data frame不建议用于10G以上的数据。一方面,数据类型转换需要时间;另一方面,把10G以上的数据读入内存,在单机版上处理,是一件非常低效的事情。
本节开始时,介绍了Spark。DataFrame从属于Spark.SQL,Spark.sql作为Spark最重要的组件,可以从各种结构化数据格式的数据源中读写。本节还展示了如何读取本地数据,比如JSON/CSV和数据库数据。同时,Spark还允许用户通过JDBC远程访问数据库。总的来说,Spark通过Spark用统一简洁的API接口进一步隐藏了分布式计算的复杂性。SQL和数据框架。从开发速度和性能来看,DataFrame SQL无疑是大数据分析的最佳选择。
1.3基本操作1.3火花。DataFrame你可以通过Spark灵活的读取各种数据源。DataFrame,数据在读取和加载后进行处理。以下是读取DataFrame格式的数据后执行的一些简单操作。
1显示DataFrame spark_df.show()打印DataFrame spark_df.printSchema()的模式信息显示spark_df.head的前n行(5)显示数据长度和列名df.count () Df.columns 2操作DataFrame列选择列ml _ dataset=spark _ df。Select (features , label )Add column from py spark . sql.functions import * #注意这个*号,这里,SQL . functions中的函数都是导入的,所以下面的abs是从DF2=spark _ df . with column( ABS _ age ,ABS(DF2 . age))Delete column df3=spark _ df . drop( age )Filter DF4=spark _ df。其中(spark _ df [age] 20)以上只是显示了少量最常见的数据帧操作。更多详情请参考官方文件或其他参考资料。
1.4 Spark简介。ml以上介绍了与Spark密切相关的数据类型和基本运算. ML机器学习——-Spark。数据帧
就像通过熊猫处理数据一样。DataFrame,下面简单介绍一下用这些处理过的数据制作美食的过程——机器学习建模。
ML包括三个主要的抽象类:转换器、估计器和管道。
转换器,顾名思义,就是在原对象的基础上转换数据帧。例如,通常使用Spark.ml.feature对特征进行归一化、分块、降级和OneHot,并通过transform()方法将一个数据帧转换为另一个数据帧。
Evaluator用于预测或分类等机器学习算法,训练数据帧并生成模型。采用拟合方法对模型进行拟合。
py spark . ml . feature import minmax scaler #定义/引入转换类max _ min _ scaler=minmax scaler(input col= age ,output col= age _ scaler )# fit data max _ min _ age=max _ min _ scaler . fit(df)#执行转换max _ min _ age _=max _ min _ age . transform(spark _ df)管道(pipline)
管道的概念也受到Python机器学习库Scikit-Learn的影响。采用一系列API来定义和规范机器学习工作流程,以及数据读取、特征处理、模型训练等一系列操作。可用于构建流水线pipline,实现端到端的机器学习任务。
Spark机器学习的其他部分,如特征生成、模型训练、模型保存、数据集划分/超参数优化等,后面会结合实际案例详细讲解。另外,随着Spark.3.0的发布,ML的最新介绍请移至官网。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。