
spark
早点起床晒太阳
我其实不大懂,我只是官网的搬运工。
展开
-
spark创建maven工程创建scala目录并编译
背景我创建spark的maven工程的时候,在java目录同级还创建了一个scala目录。这就得考虑编译相关的事了。解决1、创建source folder如下图所示,直接创建就好了2、编译带来的问题编译的时候发现一个问题,就是在scala目录中的scala文件可以编译的上,而java文件编译不上,而java目录下的java文件是可以的,经过查阅问题,发现默认的maven compile是不可以编译多个source folder的,需要添加plugin,如下,问题解决原创 2020-12-29 21:18:55 · 463 阅读 · 0 评论 -
spark的压缩使用和简单介绍
总览今天碰到了一个spark sql 压缩的问题,所以今天来讲一下spark的压缩一切参考spark2.4.1版本来讲解spark 压缩分为3块,rdd压缩 broadcast压缩 和spark sql的压缩1、rdd 压缩spark.rdd.compressWhether to compress serialized RDD partitions (e.g. for StorageLevel.MEMORY_ONLY_SER in Java and Scala or StorageLe原创 2020-10-30 20:30:25 · 2774 阅读 · 0 评论 -
spark 离线任务对于小文件的处理
前言spark 读写hive 比较多,发现总是有小文件很多,几百个几十KB的文件,这样对于后续处理很不友好,这里统一说一下。前置条件 我准备了一张50W数据的一张hive表,原始数据占用6个小文件。[hadoop@hebing4 ~]$ hadoop fs -ls hdfs://behhb001/hive/warehouse/hebing.db/step_step_23953295763_parquetFound 6 items-rwxr-xr-x 1 hadoop hadoop 48原创 2020-08-07 19:17:03 · 499 阅读 · 0 评论 -
关于spark在编码时的数据类型获取和定义相关的讨论
参考资料https://stackoverflow.com/questions/45414718/spark-scala-cannot-up-cast-from-string-to-int-as-it-may-truncate前言编码时有两个问题1、我们在读取数据的时候,他的数据类型,即字段名称类型这些schema怎么获取和推断的呢读取数据的时候数据类型情况分析比如说我们在调用val value = spark.read.csv(“file:///E:\data.csv”)我们读取了.原创 2020-07-27 15:01:48 · 545 阅读 · 1 评论 -
spark算子执行位置研究,driver端?executor端?
参考资料https://cloud.tencent.com/developer/article/1545723前言spark算子的执行位置 driver端 还是executor端,这些之前其实没有注意过,最近在学流处理,发现这个还是很重要的,今天专门讲一下,只有好好理解了这些,针对业务才能开发出更好的代码。具体测试driver 和executor的作用driver是运行用户编写Application 的main()函数的地方,具体负责DAG的构建、任务的划分、task的生成与调度等。ex.原创 2020-07-24 15:17:34 · 2939 阅读 · 4 评论 -
sparkStreaming向hive动态分区落地数据(IDEA测试版)
前言做电信项目有时有这种场景,将sparkStreaming读取kafka的数据经过过滤,筛选处理,广播、join等一系列操作后,根据每次批的间隔时间,把数据动态插入hive表的分区中,这边我IDEA本地进行先关测试sparkStreaming本地访问hive遇到的问题1、读取不到hive表需要将hive-site.xml hdfs-site.xml core-site.xml 放到resource目录下 或者使用spark显示的加入配置文件 (我这边是直接放到resource目录下,比较方便)原创 2020-07-22 15:20:08 · 586 阅读 · 0 评论 -
spark在集群提交sparkStreaming程序
前言sparkStreaming程序在本地IDEA 测试完以后,要到服务器上部署程序并运行,今天来测试下在服务器上提交以及遇到的问题具体操作具体思路这边的具体思路是使用依赖包上传到hdfs上,使用spark的 --jars参数来添加依赖。然后maven打包只打包相关代码就可以,不需要添加依赖。1、pom文件中的build具体pom的bulid <build> <plugins> <plugin>原创 2020-07-21 11:00:01 · 686 阅读 · 0 评论 -
structured streaming 窗口操作解析和测试
参考资料https://spark.apache.org/docs/2.4.1/structured-streaming-programming-guide.html概念解析structured streaming 窗口操作类似于分组操作,窗口操作都会维护每一个窗口所属的时间。这边上一个官方的图具体示例代码我这边直接消费的kafka的数据,然后引用的kafka数据中的timestamp,然后将kafka的value简单的做了个聚合操作然后将后续结果输出到控制台,样例代码如下 val li.原创 2020-07-09 15:40:17 · 939 阅读 · 0 评论 -
Structured Streaming 消费Kafka 解析与测试
参考资料http://spark.apache.org/docs/2.4.1/structured-streaming-kafka-integration.html前言现在Flink很火,但是自己还没有系统性的了解Structured Streaming ,今天将相关Structured Streaming消费kafka相关下了解下准备工作我这里写了个消费kafka的样例代码,可以正常的往kafka消费数据 Properties props = new Properties(); .原创 2020-07-08 14:51:59 · 1345 阅读 · 1 评论 -
spark 的kyro序列化问题与感想
参考资料:https://spark.apache.org/docs/2.4.1/tuning.html (官网地址)前言一直都在说kyro序列化,这一块对于spark在序列化这块性能提升比较大,今天研究下spark的序列化机制spark提供2个序列化库1、Java serializationjava 序列化库很灵活但是很慢,序列化对象占用的空间大。2、Kryo serializationkyro序列化更块更紧凑,但是不支持所有的Serializable 类型,需要去预先注册.原创 2020-07-07 15:52:32 · 547 阅读 · 0 评论 -
spark broadcast解析和测试
参考资料http://spark.apache.org/docs/2.4.1/rdd-programming-guide.html#broadcast-variablesbroadcast 广播机制官网介绍Broadcast variables allow the programmer to keep a read-only variable cached on each machine rather than shipping a copy of it with tasks广播变量的作用.原创 2020-07-06 16:42:19 · 777 阅读 · 0 评论 -
spark OOM的解析和测试
前言spark OOM的问题是在生产上经常发生的问题,今天来详细了解一下这块的情况,driver端的OOM没什么好说的,现在主要是讲一下executor端的内存的OOM情况以上的结论都是通过看博客以及官网得出的结论内存模型在之前的文章我讲过内存模型,其实有一块还没讲就是这个参数,之前讲系统内存占到了0.4,spark.shuffle.memoryFraction 相关属于它的一部分,占到了它的一半 即0.2spark.shuffle.memoryFraction(deprecated) Thi原创 2020-07-03 19:21:33 · 349 阅读 · 0 评论 -
spark executor的内存管理相关
参考资料:https://zhuanlan.zhihu.com/p/115888408 (真的很不错的文章,受益匪浅)前言Executor 内存管理方面讲解的很多,今天第一次细细来学习一下内存管理相关我觉得理解可以让我们更对于广播变量以及缓存包括shuffle有些更好的控制和理解spark在yarn模式下运行的时候,其申请的资源是以container的形式存在的。最大资源申请受yarn.scheduler.maximum-allocation-mb这个值决定。内存组成和分配内存分为堆内内.原创 2020-06-24 17:23:07 · 407 阅读 · 0 评论 -
Spark执行各种操作的分区数解读
参考资料https://juejin.im/entry/5a372a9b6fb9a04503102d75前言我们这边分区数是按照什么规则呢,今天详细吧这个问题好好看下分区的数量决定了spark任务的并行度前提 我们的分区数都是按照默认规则,没有人为改变过分区分区规则我们不管是read.csv 还是 textFile 还是spark读取hive的数据,根源还是相当于读取hadoop上面的数据,所以他们的分区规则是一样的。原则上其实都是走的HadoopRDD相关方法。在测试和实验中也都能.原创 2020-06-23 15:58:49 · 2273 阅读 · 0 评论 -
spark数据倾斜问题解决以及造成的spark OOM问题
参考资料https://tech.meituan.com/2016/05/12/spark-tuning-pro.html (美团的文章,获益匪浅)https://blog.youkuaiyun.com/yisun123456/article/details/86699502前言对于spark而言,出现倾斜之类的问题并不陌生。大部分task很快就能完成,但是极少部分的task耗费了大部分的时间,甚至会出现OOM的场景,今天来模拟这种场景并提出解决办法模拟场景1、相关代码 val sessio.原创 2020-06-17 17:14:20 · 926 阅读 · 1 评论 -
spark提交内存分配机制
参考资料 https://zhuanlan.zhihu.com/p/137471443前言众所周知,我们一直在用spark-submit 来提交任务,在yarn 见面的Allocated Memory可以看到yarn总共的占用内存。以及启动的Containers。那具体的内存占用情况却没有显示那么清楚,今天来具体分析一下这一块。1、基本概念1、spark相关1、spark.driver.memory默认值1g。driver进程的on-heap内存,driver进程就是sparkconte.原创 2020-05-18 17:25:09 · 1582 阅读 · 0 评论 -
sparkThriftserver 长时间运行HDFS_DELEGATION_TOKEN失效问题
参考资料:https://github.com/apache/spark/pull/91681、背景sparkThriftserver 运行一天后,有人反馈查询报错,我自己测试了下,确实如此org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken): token (HDFS_DELEGATION_TOKEN token 93611 for hadoop) ca.原创 2020-05-18 14:33:08 · 1700 阅读 · 0 评论 -
spark的csv读取落地相关
前言spark 在读取和落地CSV的时候 也是一门学问,一面有很多的注意细节以及小技巧可以使用。参考资料:https://github.com/databricks/spark-csv (这里涵盖了csv的option参数)1、读取2、落地1、落地的时候为null的会落成""我在我们做BI 这边也有这种场景,就是dataset中为null的数据然后落地会为"".比如一个dataset show 出来的数据时3,null,5如果 .csv 直接落地的话 落地结果时3,"",5。原创 2020-05-09 17:42:00 · 249 阅读 · 0 评论 -
SpingBoot项目下Spark在IDEA中进行本地测试
背景我们在开发场景中肯定是在本地进行调试,然后打包部署到服务器进行运行,频繁打包测试即没有效率也不实际下面的场景以我在本地使用spark local模式访问hive为例相关代码配置1、代码 val session = SparkSession.builder().master("local").enableHiveSupport().getOrCreate() val co...原创 2020-04-29 10:49:08 · 743 阅读 · 0 评论 -
sparkThriftserver driver端数据过大挂掉的问题spark.sql.thriftServer.incrementalCollects
参考资料:https://github.com/apache/spark/pull/22219https://forums.databricks.com/questions/344/how-does-the-jdbc-odbc-thrift-server-stream-query.html背景我们是使用sparkThriftserver作为BI的底层作为查询,当我们的平台多人操作查询的时...原创 2020-04-17 17:22:39 · 2074 阅读 · 0 评论 -
spark关于jersey包的冲突
背景今天想启动spark的history server 去查询以往的日志,发现能启动成功,但是查看web界面的时候却啥也没有,并且后台报错java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; org.glassfish.jersey.server.Applicat...原创 2020-04-11 17:20:13 · 1389 阅读 · 0 评论 -
spark遇到的decimal精度缺失的问题
背景decimal进行相关计算的时候精度会缺失,比如 字段a decimal(38,18) 字段b decimal(38,18)a+b 产生的数据类型就是出现decimal(38,17) 这种情况解决在spark.2.3.2 版本以上确实会出现以上的问题解决办法是添加配置spark.sql.decimalOperations.allowPrecisionLoss false...原创 2020-04-02 10:51:52 · 4038 阅读 · 0 评论 -
spark的广播变量(Broadcast)
注明:大部分知识点是从官方文档翻译,少部分是自己测试,或者在实际项目中的总结。官方文档地址:https://spark.apache.org/docs/latest/rdd-programming-guide.html#shared-variables原理通常情况下,spark的变量只为单独的task工作。广播变量的出现,可以在每台服务器保存一个变量而不是在每一个task上保留一份。官方...原创 2020-03-26 11:18:41 · 2417 阅读 · 0 评论 -
spark的日志监控(WEB UI 和history server)
背景当我们在跑一个spark任务的时候,如果碰到数据倾斜或者我们想去看下运行参数或者具体的运行情况,这时候我们就需要一个可视化的日志页面,去监控spark的运行。(注明:大部分知识点是从官方文档翻译,少部分是自己测试,或者在实际项目中的总结。)官方文档地址:https://spark.apache.org/docs/latest/monitoring.html1、spark UI默认情况...原创 2020-03-25 20:10:23 · 3084 阅读 · 0 评论 -
SparkThiftServer 资源动态分配
背景在做的项目BI 使用的是sparkJDBC来去查询和处理数据。依赖的SparkThiftServer这一块东西还是挺多的,今天来讲一下资源动态分配。有了资源动态分配的功能,使其在处理大数据量或者小数据量的时候,都可以处理,而且相对来说不用一直占用较多资源。本文大部分参考官方文档,小部分是自己实际测试得出的结论。官方文档地址:https://spark.apache.org/docs/la...原创 2020-03-19 20:44:23 · 673 阅读 · 0 评论 -
spark多目录输出
背景现在有这么一个需求,spark 读取日志信息,日志中有info,error,debug 相关的日志,我们要将其读取并分别放到不同的目录中。当然了,每次读取落地一次也可以,但是这样相当于要读取多次,在文件很大的时候,效率这块肯定不好解决spark可以支持多目录输出,具体方法如下1、我们可以使用saveAsHadoopFile方法,并自定义一个类继承MultipleTextOutputF...原创 2020-03-19 10:50:15 · 1003 阅读 · 0 评论