Spark系列
文章平均质量分 81
Spark 深入浅出
Michealkz
这个作者很懒,什么都没留下…
展开
-
SparkCore排序之-----基本排序
对于Double、Int 等类型,Spark中默认是实现了排序的功能,我们可以直接使用SortBy进行排序,将我们所需要的字段传递进去,第二个参数默认是falseobject SortApp01 { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf().setAppName("Sor...原创 2020-04-04 13:27:45 · 296 阅读 · 1 评论 -
Spark性能调优实战-02
Spark 性能调优的本质先入为主的反例性能调优的本质定位性能瓶颈的途径有哪些?性能调优的方法与手段性能调优的终结小结先入为主的反例在典型的 ETL 场景中,我们经常需要对数据进行各式各样的转换,有的时候,因为业务需求太复杂,我们往往还需要自定义 UDF(User Defined Functions)来实现特定的转换逻辑。但是,无论是 Databricks 的官方博客,还是网上浩如烟海的 Spark 技术文章,都警告我们尽量不要自定义 UDF 来实现业务逻辑,要尽可能地使用 Spark 内置的 SQL原创 2021-04-09 13:11:16 · 443 阅读 · 0 评论 -
Spark性能调优实战-01
在日常的开发工作中,我发现有个现象很普遍。很多开发者都认为 Spark 的执行性能已经非常强了,实际工作中只要按部就班地实现业务功能就可以了,没有必要进行性能调优。你是不是也这么认为呢?确实,Spark 的核心竞争力就是它的执行性能,这主要得益于 Spark 基于内存计算的运行模式和钨丝计划的锦上添花,以及 Spark SQL 上的专注与发力。但是,真如大家所说,开发者只要把业务逻辑实现了就万事大吉了吗?这样,咱们先不急于得出结论,你先跟着我一起看两个日常开发中常见的例子,最后我们再来回答这个问题。.原创 2021-03-30 22:35:11 · 765 阅读 · 4 评论 -
Spark 3.0 Adaptive Query Execution
Spark3.0已经发布半年之久,这次大版本的升级主要是集中在性能优化和文档丰富上,其中46%的优化都集中在Spark SQL上,SQL优化里最引人注意的非Adaptive Query Execution莫属了。Adaptive Query Execution(AQE)是英特尔大数据技术团队和百度大数据基础架构部工程师在Spark 社区版本的基础上,改进并实现的自适应执行引擎。近些年来,Spark SQL 一直在针对CBO 特性进行优化,而且做得十分成功。CBO基本原理在介绍CBO前,我们.转载 2021-01-22 18:17:46 · 769 阅读 · 0 评论 -
SparkLaunch提交Spark任务到Yarn集群
SparkLaunch提交Spark任务到Yarn集群原创 2023-01-02 17:43:52 · 2482 阅读 · 1 评论 -
Spark动态资源池
动态资源分配Spark提供了一种机制,可以根据工作负载动态调整应用程序占用的资源。这意味着,如果不再使用资源,您的应用程序可以将资源返还给群集,并在以后有需求时再次请求它们。如果多个应用程序共享您的Spark集群中的资源,则此功能特别有用。官方文档地址:http://spark.apache.org/docs/latest/job-scheduling.html默认情况下,此功能是禁用的,并且在所有ClusterManager上都可用,即StandAlone模式,YARN模式和 Mesos粗粒度模原创 2022-04-07 19:59:41 · 1138 阅读 · 0 评论 -
Spark DataSet 常用Api 汇总
Spark DataSet Api 整合dtypes : 每一列信息 /** * Returns all column names and their data types as an array. * * @group basic * @since 1.6.0 */ def dtypes: Array[(String, String)] = schema.fields.map { field => (field.name, field.dataType原创 2021-08-15 23:11:48 · 1256 阅读 · 0 评论 -
IDEA 导入Spark源码并编译
1.下载配置Spark源码首先下载Spark 源码:https://github.com/apache/spark/tree/v2.4.5官网地址:https://github.com/apache/spark这里最好是云主机上面编译好之后将仓库拉到本地然后配置本地的maven和仓库地址,在windows上面下载的话可能会比较慢,如果等不及可以墙一下。可以修改主pom文件中的scala 版...原创 2020-11-30 21:32:02 · 2048 阅读 · 0 评论 -
Spark on YARN时大量jar乱飞情况
在使用Spark On Yarn的时候会出现jar包乱飞的现象,并且会给出警告提示下面来分析一下这个问题目录1.日志现象2.解决方式:3.结果验证1.日志现象SparkonYarn的日志信息:WARN yarn.Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.INFO yarn.Client: Upload.原创 2020-11-08 11:14:26 · 465 阅读 · 0 评论 -
Spark 读写Hive 表
Spark 操作Hive可以采用两种方式,一种是在Spark-sql中操作Hive表,另一种是通过Hive 的MetaStore在IDEA中操作Hive表,接下来分别介绍这两种方式Spark-Shell操作Hive表1.环境配置将hive.xml 放置到Spark的conf目录下面,这里可以采用软连接的方式操作将MySQL的驱动包放到Spark的jars目录下面,方便Spark连接MySQL2.进入spark-sql客户端$SPARK_HOME/bin/spark-sqlspark-.原创 2020-07-31 22:35:37 · 7707 阅读 · 0 评论 -
Spark 常见错误
一.SparkSQL相关1.在执行insert 语句时报错,堆栈信息为:FileSystem closed。常常出现在ThriftServer里面。原因:由于hadoop FileSystem.get 获得的FileSystem会从缓存加载,如果多线程一个线程closedFileSystem会导致该BUG解决:hdfs存在不从缓存加载的解决方式,在hdfs-site.xml 配置 fs.hdfs.impl.disable.cache=true即可2.在执行Spark过程中抛出:Failed to转载 2020-11-30 21:30:25 · 999 阅读 · 0 评论 -
SparkSQL自定义UDF函数
SparkUDF1.创建SparkSession2. 使用sc的方式读取数据3.直接读取数据4.自定义函数实现功能5.使用自定义函数1.创建SparkSessionval spark = SparkSession.builder() .master("local[2]") .appName("UDFApp") .getOrCreate()2. 使用sc的...原创 2020-07-11 10:52:16 · 437 阅读 · 0 评论 -
Apache Spark 2.0 在作业完成时却花费很长时间结束
Spark 作业费时问题现象:为什么会造成这个现象?怎么在 Spark 里面设置这个参数现象:大家在使用 Apache Spark 2.x 的时候可能会遇到这种现象:虽然我们的 Spark Jobs 已经全部完成了,但是我们的程序却还在执行。比如我们使用 Spark SQL 去执行一些 SQL,这个 SQL 在最后生成了大量的文件。然后我们可以看到,这个 SQL 所有的 Spark Jobs 其实已经运行完成了,但是这个查询语句还在运行。通过日志,我们可以看到 driver 节点正在一个一个地将 t转载 2020-07-08 20:34:54 · 384 阅读 · 0 评论 -
Spark Shuffle参数 及 内存管理
Spark Shuffle 参数在工作过程中,我们需要用到Spark Shuffle 相关的参数参数名称默认值释义spark.shuffle.consolidateFilestrue合并shuffle期间产生的中间文件spark.shuffle.file.buffer shuffle32缓冲区的大小建议调大成64 或128spark.reducer.m...原创 2020-05-20 17:14:13 · 878 阅读 · 0 评论 -
SparkSQL 定义查询和使用
SparkSQL 创建和使用1.创建SparkSession2.读取数据为DataSet3.转成DataFrame并指定列名称4.保存成文件5.创建临时表使用SQL查询6.使用API的方式查询7.SQL方式实现分组求TOPN8.API方式实现分组求TOPN方式二1.创建saprkSession2.读取文件内容3.定义schema信息4.创建DataFrame5.创建临时表6.查询数据1.创建Sp...原创 2020-05-20 09:18:19 · 686 阅读 · 0 评论 -
Spark分区算法详解
一、Spark数据分区方式简要在Spark中,RDD(Resilient Distributed Dataset)是其最基本的抽象数据集,其中每个RDD是由若干个Partition组成。在Job运行期间,参与运算的Partition数据分布在多台机器的内存当中。这里可将RDD看成一个非常大的数组,其中Partition是数组中的每个元素,并且这些元素分布在多台机器中。图一中,RDD1包含了5个Partition,RDD2包含了3个Partition,这些Partition分布在4个节点中。Spark包转载 2020-05-10 16:18:44 · 1358 阅读 · 0 评论 -
java.lang.NoSuchMethodError: org.apache.hadoop.mapred.TaskID
在运行Spark程序的时候报错java.lang.NoSuchMethodError: org.apache.hadoop.mapred.TaskID.原创 2020-04-21 09:07:23 · 951 阅读 · 0 评论 -
Azkaban配置SparkJobType
1.首先要安装azkaban的插件:azkaban-jobtype:https://github.com/azkaban/azkaban/tree/master/az-hadoop-jobtype-plugin/src/jobtypes2.将spark、common.properties、commonprivate.properties拷贝到服务器中对应的目录,最终的文件展示如下[hado...原创 2020-04-12 00:20:03 · 1099 阅读 · 4 评论 -
Kafka+Spark Streaming管理offset
场景描述:Kafka配合Spark Streaming是大数据领域常见的黄金搭档之一,主要是用于数据实时入库或分析。为了应对可能出现的引起Streaming程序崩溃的异常情况,我们一般都需要手动管理好Kafka的offset,而不是让它自动提交,即需要将enable.auto.commit设为false。只有管理好offset,才能使整个流式系统最大限度地接近exactly once语义。Kaf...原创 2019-10-17 16:57:30 · 828 阅读 · 0 评论 -
SparkStreaming 中 DStream的转换操作
SparkStreaming中DStream的转换操作分为两种,一种是无状态的转换操作,另外一种是有状态的转换操。无状态转化操作就是把简单的 RDD 转化操作应用到每个批次上,也就是转化 DStream 中的每一个 RDD。部分无状态转化操作列在了下表中。 注意,针对键值对的 DStream 转化操作(比如 reduceByKey())要添加import StreamingContext._ 才...原创 2019-09-24 20:32:39 · 1403 阅读 · 0 评论 -
SparkStreaming的WordCount
SparkCore的编程入口是SparkContextSparkSQL的编程入口是SparkSessionSparkStreaming的编程入口是StreaminContext首先引入依赖:<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-st...原创 2019-09-23 21:04:33 · 215 阅读 · 0 评论 -
Spark整合Hive
Hive数据库Apache Hive是Hadoop上的SQL引擎,Spark SQL编译时可以包含Hive支持,也可以不包含。包含Hive支持的Spark SQL可以支持Hive表访问、UDF(用户自定义函数)以及 Hive 查询语言(HiveQL/HQL)等。需要强调的 一点是,如果要在Spark SQL中包含Hive的库,并不需要事先安装Hive。一般来说,最好还是在编译Spark SQL时...原创 2019-09-18 22:01:34 · 493 阅读 · 0 评论 -
SparkSQL 自定义UDAF聚合函数
在spark-shell中简单定义UDF函数scala> val df = spark.read.json("people.json")df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]scala> df.show()+----+-------+| age| name|+----+-----...原创 2019-09-18 21:24:41 · 366 阅读 · 0 评论 -
RDD DataFrame DataSet 的相互转换
RDD、DataFrame、Dataset 三者有许多共性,有各自适用的场景常常需要在三者之间转换DataFrame/Dataset转RDD:这个转换很简单val rdd1=testDF.rddval rdd2=testDS.rddRDD转DataFrame:import spark.implicits._val testDF = rdd.map {line=> ...原创 2019-09-17 20:15:58 · 720 阅读 · 0 评论 -
SparkSQL应用解析
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所有Spark SQL的应运而生,它是将Spark SQL转换成RDD...原创 2020-02-24 22:50:11 · 345 阅读 · 0 评论 -
Spark 累加器和广播变量
累加器用来对信息进行聚合,通常在向 Spark 传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱 动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本, 更新这些副本的值也不会影响驱动器中的对应变量。 如果我们想实现所有分片处理时更新共享变量的功能,那么累加器可以实现我们想要的效果。累加器的用法如下所示:通过在驱动器中调用SparkC...原创 2019-09-16 20:58:20 · 339 阅读 · 0 评论 -
RDD的行动(Action)操作
1. reduce(func)通过func函数聚集RDD中的所有元素,这个功能必须是可交换且可并联的scala> val rdd1 = sc.makeRDD(1 to 10,2)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[85] at makeRDD at <console>:24scala...原创 2019-09-11 21:30:49 · 1895 阅读 · 0 评论 -
Spark 的角色理解
Master节点主要完成集群管理器的中心化部分,作用是分配Application 到Worker节点,维护Worker节点,Driver,Application的状态,Worker节点负责具体业务的运行。Driver端的主要作用是:初始化SparkContext 与Spark集群进行通信,真正执行sc.textFile() , map,flatmap() 都是在Executor中进行执行的。...原创 2019-09-10 20:57:31 · 495 阅读 · 0 评论 -
RDD的转换(Transformation)操作
1.map(func)返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成Map算子是对于输入的数据进行定义函数的操作,可以返回其他类型的参数,Map操作应用于传入的每一个数据。scala> var source = sc.parallelize(1 to 10)source: org.apache.spark.rdd.RDD[Int] = ParallelCol...原创 2019-09-09 22:06:06 · 4813 阅读 · 0 评论 -
RDD的特性
RDD是一个弹性分布式数据集,接下来小编介绍一下RDD的几个特性转换过程 A.flatMap() --> B.Map --->C1.不可变不可变指的是RDD经过算子操作之后会形成新的RDD,原有的RDD并不会发生改变2.可分区RDD代表一个不可变可分区的集合,里面的元素可以并行计算,最终是将任务以Task形式交给Executor执行,Task之间互不相关,task的并行度就...原创 2019-09-09 21:48:50 · 2287 阅读 · 0 评论 -
spark 与 scala 版本对应关系
在开发spark程序的时候,用scala语言进行开发需要考虑sparkspark 版本与scala版本的对应问题版本对应关系如下:Spark运行在Java 8 +,Python 2.7 + / 3.4 +和R 3.1+上。对于Scala API,Spark 2.4.3使用Scala 2.12。您需要使用兼容的Scala版本(2.12.x)。请注意自Spark 2.2.0起,对2.6.5...原创 2019-08-28 14:18:05 · 16818 阅读 · 0 评论