Spark系列之Spark概述

news2024/11/27 20:39:16

title: Spark系列


What is Apache Spark™?

Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters.

第一章 Spark概述

1.1 Spark的产生背景

1.1.1 MapReduce的发展

1.1.1.1 MRv1的缺陷

早在 Hadoop1.x 版本,当时采用的是 MRv1 版本的 MapReduce 编程模型。MRv1版本的实现都封装在 org.apache.hadoop.mapred 包中,MRv1 的 Map 和 Reduce 是通过接口实现的。MRv1包括三个部分:

运行环境(JobTracker和TaskTracker)
编程模型(MapReduce)
数据处理引擎(MapTask和ReduceTask)

MRv1 存在以下不足:

可扩展性不足

在运行时,JobTracker既负责资源管理又负责任务调度,当集群繁忙时,JobTracker很容易成为瓶颈,最终导致它的可扩展性问题。

可用性差

采用了单节点的Master,没有备用Master及选举操作,这导致一旦Master出现故障,整个集群将不可用。

资源利用率低

	TaskTracker使用“slot”等量划分本节点上的资源量。“slot”代表计算资源(CPU、内存等)。一个Task获取到一个slot后才有机会运行,Hadoop调度器负责将各个TaskTracker上的空闲slot分配给Task使用。一些Task并不能充分利用slot,而其他Task也无法使用这些空闲的资源。slot分为Map slot和Reduce slot两种,分别供MapTask 和ReduceTask 使用。有时会因为作业刚刚启动等原因导致MapTask很多,而Reduce Task任务还没有调度的情况,这时Reduce slot也会被闲置。 
slot ===> container

不能支持多种计算引擎框架

无法通过可插拔方式将自身的MapReduce框架替换为其他实现,如Spark、Storm、flink等。

1.1.1.2 MRv2的缺陷

Apache为了解决MRv1中的缺陷,对Hadoop进行了升级改造。MRv2就诞生了。
MRv2中,重用了MRv1中的编程模型和数据处理引擎。但是运行时环境被重构了。JobTracker被拆分成了通用的

资源调度平台(ResourceManager,简称RM)、
节点管理器(NodeManager)、
负责各个计算框架的任务调度模型(ApplicationMaster,简称AM)。

​ ResourceManager 依然负责对整个集群的资源管理,但是在任务资源的调度方面只负责将资源封装为Container分配给 ApplicationMaster 的一级调度,二级调度的细节将交给 ApplicationMaster 去完成,这大大减轻了ResourceManager 的压力,使得 ResourceManager 更加轻量。NodeManager 负责对单个节点的资源管理,并将资源信息、Container 运行状态、健康状况等信息上报给ResourceManager。ResourceManager 为了保证Container 的利用率,会监控 Container,如果Container 未在有限的时间内使用,ResourceManager 将命令NodeManager 杀死 Container,以便于将资源分配给其他任务。MRv2 的核心不再是 MapReduce 框架,而是YARN。在以 YARN 为核心的MRv2 中,MapReduce 框架是可插拔的,完全可以替换为其他分布式计算模型实现,比如Spark、Storm等。

​ Hadoop MRv2 虽然解决了 MRv1 中的一些问题,但是由于对 HDFS 的频繁操作(包括计算结果持久化、数据备份、资源下载及 Shuffle 等)导致磁盘 I/O 成为系统性能的瓶颈,因此只适用于离线数据处理或批处理,而不能支持对迭代式、交互式、流式数据的处理。

1.1.2 Spark的产生

在这里插入图片描述

Spark 看到 MRv2 的问题,对 MapReduce 做了大量优化,总结如下:

1、减少磁盘I/O:

随着实时大数据应用越来越多,Hadoop作为离线的高吞吐、低响应框架已不能满足这类需求。Hadoop MapReduce 的 map 端将中间输出和结果存储在磁盘中,reduce 端又需要从磁盘读写中间结果,势必造成磁盘IO成为瓶颈。Spark 允许将 map 端的中间输出和结果存储在内存中,reduce 端在拉取中间结果时避免了大量的磁盘I/O。Hadoop YARN 中的 ApplicationMaster 申请到Container后,具体的任务需要利用NodeManager 从 HDFS 的不同节点下载任务所需的资源(如Jar包),这也增加了磁盘I/O。Spark 将应用程序上传的资源文件缓冲到 Driver 本地文件服务的内存中,当 Executor 执行任务时直接从 Driver 的内存中读取,也节省了大量的磁盘 I/O。

2、增加并行度:

由于将中间结果写到磁盘与从磁盘读取中间结果属于不同的环节,Hadoop 将它们简单的通过串行执行衔接起来。Spark 把不同的环节抽象为 Stage,允许多个 Stage 既可以串行执行,又可以并行执行。

3、避免重新计算:

当Stage中某个分区的Task执行失败后,会重新对此Stage调度,但在重新调度的时候会过滤已经执行成功的分区任务,所以不会造成重复计算和资源浪费。
MapReduce:
	mapper阶段    reduce阶段
Spark:
	stage1    stage2    stage3    stage4    ......
	多个stage中间会有shuffle
	可以选择性的持久化某个阶段的执行结果
	DAG:有向无环图

4、可选的Shuffle和排序:

Hadoop MapReduce在Shuffle之前有着固定的排序操作(只能对key排字典顺序),而Spark则可以根据不同场景选择在map端排序或者reduce端排序。

5、灵活的内存管理策略:

Spark将内存分为堆上的存储内存、堆外的存储内存、堆上的执行内存、堆外的执行内存4个部分。Spark既提供了执行内存和存储内存之间是固定边界的实现,又提供了执行内存和存储内存之间是“软”边界的实现。Spark默认使用“软”边界的实现,执行内存或存储内存中的任意一方在资源不足时都可以借用另一方的内存,最大限度的提高资源的利用率,减少对资源的浪费。Spark由于对内存使用的偏好,内存资源的多寡和使用率就显得尤为重要,为此Spark的内存管理器提供的Tungsten实现了一种与操作系统的内存Page非常相似的数据结构,用于直接操作操作系统内存,节省了创建的Java对象在堆中占用的内存,使得Spark对内存的使用效率更加接近硬件。Spark会给每个Task分配一个配套的任务内存管理器,对Task粒度的内存进行管理。Task的内存可以被多个内部的消费者消费,任务内存管理器对每个消费者进行Task内存的分配与管理,因此Spark对内存有着更细粒度的管理。

​ 基于以上所列举的优化,Spark官网声称性能比Hadoop快100倍。即便是内存不足需要磁盘I/O时,其速度也是Hadoop的10倍以上。那么 Spark 会取代 Hadoop 么?

Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

1.2 Spark概念

官网:http://spark.apache.org/

在这里插入图片描述

Apache Spark is a fast and general-purpose cluster computing system. It provides high-level APIs in Java, Scala, Python and R, and an optimized engine that supports general execution graphs. It also supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Spark Streaming.

上面是老的版本的介绍

下面是新的版本的介绍

What is Apache Spark™?
Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters.
Spark是一个多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习。
Spark是一种快速、通用、可扩展的大数据分析引擎
2009年诞生于加州大学伯克利分校AMP实验室
2010年开源
2013年6月成为Apache孵化项目
2014年2月成为Apache顶级项目
项目代码使用Scala语言进行编写

​ Spark 生态圈也称为 BDAS(伯克利数据分析栈),是伯克利APMLab实验室打造的,力图在算法(Algorithms)、机器(Machines)、人(People)之间通过大规模集成来展现大数据应用的一个平台。伯克利AMPLab运用大数据、云计算、通信等各种资源以及各种灵活的技术方案,对海量不透明的数据进行甄别并转化为有用的信息,以供人们更好的理解世界。该生态圈已经涉及到机器学习、数据挖掘、数据库、信息检索、自然语言处理和语音识别等多个领域。

​ Spark 生态圈以 SparkCore 为核心,从 HDFS、Amazon S3 或者 HBase 等持久层读取数据,以Mesos、YARN和自身携带的 Standalone 为资源管理器调度 Job 完成 Spark 应用程序的计算。 这些应用程序可以来自于不同的组件,如 SparkShell/SparkSubmit 的批处理、SparkStreaming 的实时处理应用、SparkSQL 的结构化数据处理/即席查询、BlinkDB 的权衡查询、MLlib/MLbase 的机器学习、GraphX 的图处理和 PySpark 的数学/科学计算和SparkR的数据分析等等。

​ 目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、SparkStreaming、GraphX、MLib、SparkR等子项目,Spark是基于内存计算的大数据并行计算框架。除了扩展了广泛使用的MapReduce计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。Spark适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。通过在一个统一的框架下支持这些不同的计算,Spark使我们可以简单而低耗地把各种处理流程整合在一起。而这样的组合,在实际的数据分析过程中是很有意义的。不仅如此,Spark的这种特性还大大减轻了原先需要对各种平台分别管理的负担。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;17年左右,腾讯 Spark 集群达到 8000 台的规模,是当前已知的世界上最大的Spark集群。

大一统的软件栈,各个组件关系密切并且可以相互调用,这种设计有几个好处:

1、软件栈中所有的程序库和高级组件都可以从下层的改进中获益。
2、运行整个软件栈的代价变小了。不需要运行5到10套独立的软件系统了,一个机构只需要运行一套软件系统即可。系统的部署、维护、测试、支持等大大缩减。
3、能够构建出无缝整合不同处理模型的应用。

1.3 Spark特点

​ 这个其实是老的版本的中的全量的特点。新的版本官网中只有Key features(主要特征)了。为了全面的学习,我们给所有的特点都看看。

1.3.1 Speed:快速高效

	随着实时大数据应用越来越多,Hadoop 作为离线的高吞吐、低响应框架已不能满足这类需求。Hadoop MapReduce 的 Job 将中间输出和结果存储在 HDFS 中,读写 HDFS 造成磁盘 IO 成为瓶颈。Spark 允许将中间输出和结果存储在内存中,节省了大量的磁盘IO。Apache Spark 使用最先进的DAG调度程序,查询优化程序和物理执行引擎,实现批量和流式数据的高性能。同时 Spark 自身的 DAG 执行引擎也支持数据在内存中的计算。Spark官网声称性能比Hadoop快100倍。即便是内存不足需要磁盘IO,其速度也是Hadoop的10倍以上。

1.3.2 Ease of Use:简洁易用

	Spark现在支持Java、Scala、Python和R等编程语言编写应用程序,大大降低了使用者的门槛。自带了80多个高等级操作符,允许在Scala,Python,R的shell中进行交互式查询,可以非常方便的在这些Shell中使用Spark集群来验证解决问题的方法。

1.3.3 Generality:通用,全栈式数据处理

​ Spark提供了统一的解决方案。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台 去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

支持批处理(Spark Core)

Spark Core是Spark的核心功能实现,包括:SparkContext的初始化(DriverApplication通过SparkContext提交)、部署模式、存储体系、任务提交与执行、计算引擎等。Spark Core中还包含了对RDD (resilient distributed dataset,弹性分布式数据集)的 API定义。

支持交互式查询(Spark SQL)

Spark SQL 是Spark来操作结构化数据的程序包,可以让我们使用SQL语句的方式来查询数据,Spark支持多种数据源,包含Hive表,parquet以及JSON等内容。

支持流式计算(Spark Streaming)

与MapReduce只能处理离线数据相比,Spark还支持实时的流计算。Spark依赖Spark Streaming对数据进行实时的处理。

支持机器学习(Spark MLlib)

提供机器学习相关的统计、分类、回归等领域的多种算法实现。其一致的API接口大大降低了用户的学习成本。

支持图计算(Spark GraghX)

提供图计算处理能力,支持分布式, Pregel提供的API可以解决图计算中的常见问题。

支持Python操作–PySpark

Spark提供了一个Python_Shell,即pyspark,从而可以以交互的方式使用Python编写Spark程序。pyspark里最核心的模块是SparkContext(简称sc),最重要的数据载体是RDD。RDD就像一个NumPyarray或者一个Pandas Series,可以视作一个有序的item集合。只不过这些item并不存在driver端的内存里,而是被分割成很多个partitions,每个partition的数据存在集群的executor的内存中。

支持R语言–SparkR

从Spark1.4版本(2015.6)开始添加了SparkR API,它的出现能让数据分析师和数据科学家在Spark平台上使用R语言分析大型数据集以及交互式作业。

1.3.4 Runs Everywhere:兼容

​ 可用性高。Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易地部署和使用Spark,此模式下的Master可以有多个,解决了单点故障问题。当然,此模式也完全可以使用其他集群管理器替换,比如YARN、Mesos、Kubernetes、EC2等

丰富的数据源支持。Spark除了可以访问操作系统自身的本地文件系统和HDFS之外,还可以访问Cassandra、HBase、Hive、Tachyon以及任何Hadoop的数据源。这极大地方便了已经使用HDFS、HBase的用户顺利迁移到Spark。

Spark支持的几种部署方案:

Standalone:Spark自己可以给自己分配资源(Master,Worker)
YARN:Spark可以运行在Hadoop的YARN上面
Mesos:Spark可以运行在Mesos里面(Mesos 类似于YARN的一个资源调度框架)
Kubernetes:Spark接收 Kubernetes的资源调度

1.4 Spark应用场景

目前大数据处理场景有以下几个类型:

1、复杂的批处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍
受,通常的时间可能是在数十分钟到数小时;
2、基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间
3、基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间

目前对以上三种场景需求都有比较成熟的处理框架:

第一种情况可以用Hadoop的MapReduce来进行批量海量数据处理
第二种情况可以Impala、Kylin进行交互式查询
第三中情况可以用Storm、SS、Flink分布式处理框架处理实时流式数据

以上三者都是比较独立,各自一套维护成本比较高,而Spark的出现能够一站式平台满意以上需求

第一种情况使用Spark Core解决
第二种情况使用Spark SQL解决
第三种情况使用Spark Streaming解决

通过以上分析,总结Spark场景有以下几个:

1、Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越
多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小
2、由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬
虫和索引。就是对于那种增量修改的应用模型不适合
3、数据量不是特别大,但是要求实时统计分析需求

典型行业应用场景:

1、Yahoo将Spark用在Audience Expansion中的应用,进行点击预测和即席查询等
2、淘宝技术团队使用了Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等。应用于内容推荐、
社区发现等
3、腾讯大数据精准推荐借助Spark快速迭代的优势,实现了在“数据实时采集、算法实时训练、系统实时预
测”的全流程实时并行高维算法,最终成功应用于广点通PCTR投放系统上。
4、优酷土豆将Spark应用于视频推荐(图计算)、广告业务,主要实现机器学习、图计算等迭代计算。
5、……

开发工种的工作任务的未来趋势:

1、SQL 业务开发
2、web ui 平台开发
3、底层一般都是 流式计算引擎

开发:可能都不是直接写代码。 而是进行拖拽式的进行开发



声明:
        文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

微博地址: http://weibo.com/luoyepiaoxue2014 点击打开链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Flink】时间语义和水位线的概念和使用

文章目录一 时间语义与Wartermark1 Flink中的时间语义2 EventTime的引入3 Watermark(水位线)(1)基本概念(2)水位线测试a 代码编写b 计算水位线c 计算结果d 深入分析(3)水位线时间测试…

【web前端期末大作业】html网上在线书城大学生静态网页 大学生html当当书城仿站 网上书城购物网页作业HTML

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

智慧城市解决方案典型应用

4.2.智慧城市建设目标 4.2.1.高标准的智慧城市基础设施 智慧城市的基础设施主要包括城市信息基础设施和城市空间数据基础设施两个方面。智慧城市建设的首要目标是要建立起完善的、高标准的智慧城市基础设施,并在此基础上建立完备的城市基础信息资源。高标准的城市…

微软文本转语音「免费网页版」

网站地址:Text To Speech - 在线文本转语音 大家好~今天给小伙伴们安利一个AI配音小工具:TTS-文本转语音 【闲话】 疫情三年,很多人都失去工作,有的也是断断续续。很多人负债累累,在全球形势严峻,经济下滑…

【FreeRTOS(三)】任务状态

文章目录任务状态任务挂起 vTaskSuspend取消任务挂起 vTaskResume挂起任务调度器 vTaskSuspendAll取消挂起任务调度器 xTaskResumeAll代码示例:任务挂起、取消任务挂起代码示例:挂起任务调度器、取消挂起任务调度器任务状态 freeRTOS任务的状态有四种&am…

【POJ No. 3321】 子树查询 Apple Tree

【POJ No. 3321】 子树查询 Apple Tree 北大OJ 题目地址 【题意】 在卡卡的房子外面有一棵苹果树,树上有N 个叉(编号为1~N ,根为1),它们通过分支连接。苹果在叉上生长,两个苹果不会在同一个叉…

1000道最新高频Java面试题,覆盖25个技术栈,从底层原理到架构

最近感慨面试难的人越来越多了,一方面是市场环境,更重要的一方面是企业对Java的人才要求越来越高了。 基本上这样感慨的分为两类人,第一,虽然挂着3、5年经验,但肚子里货少,也没啥拿得出手的项目&#xff0c…

【外卖项目实战开发四】

文章目录菜品管理业务开发文件上传下载文件上传介绍文件下载介绍文件上传代码实现文件下载代码实现新增菜品需求分析数据模型代码开发-准备工作代码开发-梳理交互过程菜品信息分页查询需求分析代码开发-梳理交互过程修改菜品需求分析代码开发-梳理交互过程停售/起售菜品&#x…

阿里P8大牛总结的Java锁机制入门笔记,堪称教科书式天花板

前言 锁机制无处不在,锁机制是实现线程同步的基础,锁机制并不是Java锁独有的,其他各种计算机语言中也有着锁机制相关的实现,数据库中也有锁的相关内容。这篇文章就是从Java入手,深入学习、理解Java中的锁机制&#xf…

【Android App】实战项目之实现你问我答的智能语音机器人(超详细 附源码)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 一、需求描述 想必大家都见过商场里的智能语音机器人,你对它提问时它可以自动回答你的问题,接下来我们也实现这样一个机器人,它依靠语音技术完成问询服务 基本功能如下 1:接收人们…

智能家居—— 树莓派摄像头捕捉人脸并识别

文章目录下载安装mjpg-streamer树莓派安装libcurl库树莓派安装openssl库语音控制开启摄像头线程拍照代码及步骤语音控制摄像头拍照camera.ccontrolDevice.h下载安装mjpg-streamer 参考博文:智能家居 —— 树莓派下载安装mjpg-streamer(完成拍照录像监控…

市面上真正的全光谱灯品牌有哪些?全光谱护眼照明灯的作用很明显

众所周知,人眼感知任何事物都离不开光线的照射,但很多人可能不知道,光线不仅可以使我们“看得见”,还可以决定我们是否看得“真实”,这是怎么回事呢?其实这就是光线的色谱丰富度的问题。 人眼感知最舒适的光…

堆、堆排序、堆应用

一、概述 “堆”(Heap),原地排序、时间复杂度O(nlogn)的排序算法。 堆是一个完全二叉树;堆中每一个节点的值都必须大于等于(或者小于等于)其子树中每个节点的值; 二、如何实现一个堆 使用数…

第2-4-7章 docker安装WorkBench-规则引擎Drools-业务规则管理系统-组件化-中台

文章目录8. WorkBench8.1 WorkBench简介8.2 安装方式8.2.1 传统方式安装8.2.2 docker安装drools workbench8.3 使用方式8.3.1 创建空间、项目8.3.2 创建数据对象8.3.3 创建DRL规则文件8.3.4 创建测试场景8.3.5 设置KieBase和KieSession8.3.6 编译、构建、部署8.3.7 在项目中使用…

Intel PAUSE 指令变化如何影响 MySQL 的性能

导读 x86、arm指令都很多,无论是应用程序员还是数据库内核研发大多时候都不需要对这些指令深入理解,但是 Pause 指令和数据库操作太紧密了,本文通过一次非常有趣的性能优化来引入对 Pause 指令的理解,期望可以事半功倍地搞清楚 C…

微服务线上问题排查困难?不知道问题出在哪一环?那是你还不会分布式链路追踪

咱们以前单体应用里面有很多的应用和功能,依赖各个功能之间相互调用,使用公共的代码包等等,排查问题,使用类似于 gdb/dlv 工具或者直接查看代码日志,进行定位和分析 但是现在我们基本上都是微服务架构了,将…

Node.js 入门教程 20 查看 npm 包安装的版本 21 安装 npm 包的旧版本

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录Node.js 入门教程20 查看 npm 包安装的版本21 安装 npm 包的旧版本20 查看 npm 包安装的版本 若要查看所有已安装的 npm 软件包&#xff08…

JetpackCompose Navigation导航快速上手

Navigation 快速上手 下面案例简要展示使用 Compose 版本的 Navigation 库来实现两个页面之间的跳转 这是完整的结构(忽略掉红线划过的那个包) 编写欲跳转的两个页面 编写 Demo1 页面 子页面使用多个 composable 组件相组合的方法一一装配起来 Demo1m…

【博客543】golang pprof性能调试:寻找cpu瓶颈

golang pprof性能调试:寻找cpu瓶颈 1、引入pprof进行性能调试 在代码中加入: import _ "net/http/pprof"go func() {http.ListenAndServe("0.0.0.0:8899", nil) }()示例:为冒泡排序加入pprof debug package mainimpo…

月薪2万的大数据职位,为什么必须学习Python?

前言 马云说:“未来最大的资源就是数据,不参与大数据十年后一定会后悔。”毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰。 我们先来看一下数据分析相关职位现在的薪…