![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 62
雾岛与鲸
这个作者很懒,什么都没留下…
展开
-
spark3使用hive zstd压缩格式总结
ZSTD(全称为Zstandard)是一种开源的无损数据压缩算法,其压缩性能和压缩比均优于当前Hadoop支持的其他压缩格式,本特性使得Hive支持ZSTD压缩格式的表。Hive支持基于ZSTD压缩的存储格式有常见的ORC,RCFile,TextFile,JsonFile,Parquet,Squence,CSV。ZSTD压缩格式的表和其他普通压缩表的SQL操作没有区别,可支持正常的增删查及聚合类SQL操作。写出的文件使用zstd压缩,spark3才开始支持。原创 2023-10-10 18:06:56 · 1388 阅读 · 0 评论 -
Spark结合多线程批量执行任务
若该任务申请到10个core,10G内存,而在执行第一个sql1时,job只使用了4个Core和2G内存,那么就造成了资源的浪费和剩下的任务还在等待该job的执行,不能做到资源的合理使用,而且任务时串行执行效率慢。await()方法会一致阻塞,直到计数器的值减为0,才会释放锁,以便所有任务执行完毕后继续执行下一步操作。注意:任务中视图表的创建、临时表的创建、等共享变量的创建,多个任务同时执行时,会造成同时使用!返回值Future 的get()方法是个阻塞方法,会等待结果的返回,直到任务结束。原创 2023-02-27 18:32:37 · 1201 阅读 · 0 评论 -
Spark JDBC采用分区读取数据库时partitionColumn, lowerBound, upperBound, numPartitions参数理解
partitionColumn是应该用于确定分区的列。lowerBound并upperBound确定要获取的值的范围。完整数据集将使用与以下查询对应的行:numPartitions确定要创建的分区数。例如,如果:步幅等于100。原创 2023-02-01 15:30:29 · 1048 阅读 · 0 评论 -
是时候学习真正的 spark 技术了
spark sql 可以说是 spark 中的精华部分了,我感觉整体复杂度是 spark streaming 的 5 倍以上,现在 spark 官方主推 structed streaming, spark streaming 维护的也不积极了, 我们基于 spark 来构建大数据计算任务,重心也要向 DataSet 转移,原来基于 RDD 写的代码迁移过来,好处是非常大的,尤其是在性能方面,有质的提升, spark sql 中的各种内嵌的性能优化是比人裸写 RDD 遵守各种所谓的最佳实践更靠谱的,尤其对转载 2022-02-14 16:06:26 · 170 阅读 · 0 评论 -
Spark SQL 3.0 自适应执行优化引擎
在本篇文章中,笔者将给大家带来 Spark SQL 中关于自适应执行引擎(Spark Adaptive Execution)的内容。 在之前的文章中,笔者介绍过 Flink SQL,目前 Flink 社区在积极地更新迭代 Flink SQL 功能和优化性能,尤其 Flink 1.10.0 版本的发布,在增强流式 SQL 处理能力的同时也具备了成熟的批处理能力。但是在 SQL 功能完整性和生...转载 2022-01-22 14:51:08 · 482 阅读 · 0 评论 -
spark程序使用 gson 高版本解决方案
问题spark调用gson的方法,运行时抛出NoSuchMethod异常。本地编译无问题。查看依赖,程序本身并没有依赖老版本的gson。原因spark自带gson,版本为2.2.4。spark任务启动时,会优先加载该版本。程序本身编译集成的gson版本不会被加载。如果代码中使用了更高版本的gson才有的方法和特性,就会抛出异常。解决方案方法1使用和spark版本相同的gson,即2.2.4。优点:不会再报该异常。缺点:无法使用新版本的gson,一些方法和特性都无法使用原创 2021-12-26 18:22:58 · 1299 阅读 · 0 评论 -
Spark SQL小文件问题解决方案
Spark SQL小文件小文件是指文件大小显著小于hdfs block块大小的的文件。过于繁多的小文件会给HDFS带来很严重的性能瓶颈,对任务的稳定和集群的维护会带来极大的挑战。由于Spark本身并不支持小文件合并功能,小文件问题日益突出。Spark为什么会产生小文件Spark生成的文件数量直接取决于RDD里partition的数量和表分区数量。注意这里的两个分区概念并不相同,RDD的分区与任务并行度相关,而表分区则是Hive的分区数目。生成的文件数目一般是RDD分区数和表分区的乘积。因此,当任务并原创 2021-12-10 10:34:41 · 4625 阅读 · 3 评论 -
如何使用 CTE 在 Spark SQL 中创建临时视图?
举个例子????:create temporary view cars as with models as ( select 'abc' as model)select model from models原创 2021-06-04 16:51:27 · 354 阅读 · 0 评论 -
图计算: 使用 Spark Graphx Pregel API 处理分层数据
今天,分布式计算引擎是许多分析、批处理和流应用程序的支柱。Spark提供了许多开箱即用的高级功能(pivot、分析窗口函数等)来转换数据。有时需要处理分层数据或执行分层计算。许多数据库供应商提供诸如“递归 CTE(公用表达式)”或“join” SQL 子句之类的功能来查询/转换分层数据。CTE 也称为递归查询或父子查询。在这篇文章中,我们将看看如何使用 Spark 解决这个问题。分层数据概述 –存在分层关系,其中一项数据是另一项的父项。分层数据可以使用图形属性对象模型表示,其中每一行都是一个顶点(节点)原创 2021-11-25 16:54:04 · 1464 阅读 · 0 评论 -
spark 调优参数
Spark.reducer.maxSizeInFlight默认值:48m参数说明:该参数用于设置shuffle read任务的buff缓冲区大小,该缓冲区决定一次可以拉取多少数据。调整建议:如果可用内存资源足够,则可以增加参数的大小(例如96m),从而减少拉取数据的次数,这可以减少网络传输的次数并提高性能。 在实践中发现,合理调整参数后,性能会提高1%至5%。但是executor内存不足时,设置的太大,就会造成OOM导致宕机Spark.shuffle.file.buffer默认值:32k参原创 2021-11-16 11:09:21 · 415 阅读 · 0 评论 -
Spark on Yarn与Flink on Yarn连接kerberos认证的Hbase
Spark和Flink均为分布式计算引擎,在使用yarn作为资源调度器提交任务并且连接拥有Kerberos认证的Hbase时,同时面临着认证文件分发与获取的问题。两者的解决方案也是类似的,先在driver端加载认证文件,存储到分布式缓存,然后再Executor端获取文件目录进行认证。Spark on Yarndriver端 sparkSession.sparkContext.addFile(keytabPath) sparkSession.sparkContext.addFile(krb5P转载 2020-12-16 10:35:46 · 733 阅读 · 5 评论 -
Spark 内核解析
目录1、Spark内核概述1.1 Spark核心组件回顾1.1.1 Driver1.1.2 Executor1.2 Spark通用运行流程概述2、Spark通讯架构2.1 Spark通信架构概述2.2 Saprk通讯架构解析2.3 Spark集群启动3、Spark部署模式3.1 Standalone模式运行机制3.1.1 Standalone Client模式3.1.2 Standalone Cluster模式3.2 Yarn模式运行机制3.2.1 Yarn Client模式3.2.2 Yarn Clust原创 2020-10-28 14:36:31 · 353 阅读 · 0 评论 -
SparkStreaming程序监控(实时任务监控都可以使用)
使用python编写SparkStreaming任务监控脚本,checkRealTime.py 脚本内容如下:# -*-coding:utf-8-*-import datetimeimport timeimport subprocessimport requestsimport jsonimport hmacimport hashlibimport base64import configparserfrom urllib.parse import quote_plusimport l原创 2020-10-27 10:54:41 · 1181 阅读 · 0 评论 -
Spark Streaming保证Exactly-Once语义
在流计算引擎如Apache Storm、Apache Kafka(Kafka Streams)、Apache Spark(Spark Streaming、Spark Structured Streaming)、Apache Flink中,经常提到Exactly-Once语义,那Exactly-Once究竟是啥意思?当流计算引擎声称Exactly-Once时,究竟意味着啥?Spark Streaming如何保证Exactly-Once?关于此,自己有时也百思不得其解,查阅了众多资料,咨询了众多大佬,将自己理转载 2020-09-17 14:27:26 · 337 阅读 · 0 评论 -
Spark Streaming VS Flink
本文从编程模型、任务调度、时间机制、Kafka 动态分区的感知、容错及处理语义、背压等几个方面对比 Spark Stream 与 Flink,希望对有实时处理需求业务的企业端用户在框架选型有所启发。本文篇幅较长,建议先收藏~目录```/ 运行模型对比 / ``````生态``````运行模型``````/ 编程模型对比 / ``````Spark Streaming``````Flink``````/ 任务调度原理 / ``````Spark 任务调度``````Flink 任务调度``````/ 时间转载 2020-09-15 16:50:18 · 646 阅读 · 0 评论 -
spark算子reducebykey和groupbykey的对比
目录一、场景二、源码解读结论一、场景reducebykey和groupbykey作为经常使用的算子,都会触发shuffle操作。reducebykey返回的 k-v 的tuple的rddgroupbykey返回的 k-iterable 的tuple的rdd二、源码解读这两个方法的底层都调用了combineByKeyWithClassTag这个方法groupbykey 调用:/** * Group the values for each key in the RDD into a s原创 2020-09-14 15:41:05 · 215 阅读 · 0 评论 -
关于SparkStreaming的checkpoint的弊端
当使用sparkstreaming处理流式数据的时候,它的数据源搭档大部分都是Kafka,尤其是在互联网公司颇为常见。当他们集成的时候我们需要重点考虑就是如果程序发生故障,或者升级重启,或者集群宕机,它究竟能否做到数据不丢不重呢?也就是通常我们所说的高可靠和稳定性,通常框架里面都带有不同层次的消息保证机制,一般来说有三种就是:at most once 最多一次 at least once 最少一次 exactly once 准确一次 在sparkstreaming如何做到数据不丢失呢?原创 2020-08-20 11:40:52 · 366 阅读 · 0 评论 -
SparkStreaming程序异常: java.io.IOException: Lease timeout of 0 seconds expired.
异常问题:使用spark Streaming 消费kafka 数据进行计算处理,任务运行3周没有问题,第四周突然出现这个问题,记录一下原创 2020-08-17 10:05:18 · 483 阅读 · 6 评论 -
Spark partition 理解 - coalesce 与 repartition的区别
一、spark 分区 partition 的理解spark中是以vcore级别调度task的。如果读取的是hdfs,那么有多少个block,就有多少个partition举例来说:sparksql 要读表T, 如果表T有 1w 个小文件,那么就有 1w 个partition这时候读取效率会较低。假设设置资源为 --executor-memory 2g --executor-cores 2 --num-executors 5 步骤是拿出1-10号10个小文件(也就是10个partition)分别原创 2020-07-30 18:54:34 · 796 阅读 · 0 评论 -
Spark任务Kryo序列化缓冲区溢出,设置Kryo序列化缓冲区大小
背景今天在开发SparkRDD的过程中出现Buffer Overflow错误,查看具体Yarn日志后发现是因为Kryo序列化缓冲区溢出了,日志建议调大spark.kryoserializer.buffer.max的value,搜索了一下设置keyo序列化缓冲区的方法,特此整理记录下来。20/01/08 17:12:55 WARN scheduler.TaskSetManager: Lost task 1.0 in stage 1.0 (TID 4, s015.test.com, executor 1):原创 2020-07-30 18:49:19 · 3200 阅读 · 0 评论 -
Spark 的 coalesce 的利弊及原理
1、RDD.scala 的 coalesce函数源码/* * numPartitions: 分区数 * shuffle: 是否进行shuffle(默认不shuffle) * partitionCoalescer: Coalesce分区器(用来决定哪些父rdd的分区组成一组,作为一个partitiongroup,也 * 即是决定了coalescedrdd的分区情况) */def coalesce(numPartitions: Int, shuffle: Boolean = false,原创 2020-07-30 18:30:53 · 3169 阅读 · 0 评论