![](https://img-blog.csdnimg.cn/20210625171433312.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spark
文章平均质量分 82
spark相关开发
BIT_666
天道酬勤,厚积薄发
展开
-
Spark - 创建 _SUCCESS 文件与获取最新可用文件
Spark 为文件、文件夹生成 _SUCCESS 标识并获取最新可用文件。原创 2023-05-16 14:42:20 · 1100 阅读 · 2 评论 -
Spark - 获取一定时间内的 Hdfs 全部文件并读取
Spark 读取一定范围内的 Hdfs 文件。原创 2023-04-30 18:12:07 · 2246 阅读 · 1 评论 -
Spark - AUC、Accuracy、Precision、Recall、F1-Score 理论与实战
Spark AUC、Accuracy、Precision、Recall、F1-Score 理论与实战。原创 2023-04-06 10:50:46 · 1532 阅读 · 0 评论 -
Spark - Isotonic Regression 理论与实战
SparkIsotonic Regression 保序回归理论与实战。原创 2023-03-29 15:11:33 · 733 阅读 · 0 评论 -
Spark - 继承 FileOutputFormat 实现向 HDFS 地址追加文件
Spark 继承 FileOutputFormat 实现向 HDFS 追加存储文件需求。原创 2023-03-22 08:00:00 · 699 阅读 · 1 评论 -
Spark - 数据倾斜实战之 skewness 偏度与 kurtosis 峰度 By ChatGPT4
ChatGPT4 指导下的 Spark Skewness 数据倾斜实战。原创 2023-03-20 08:00:00 · 913 阅读 · 0 评论 -
Spark - [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Mac and os.arch.. 解决
[FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Mac and os.arch=aarch6 Spark 异常排查与解决。原创 2023-01-17 14:56:48 · 2378 阅读 · 0 评论 -
Spark / Java - atomic.LongAccumulator 与 Spark.util.LongAccumulator 计数使用
java.util.LongAccumulator 与 Spark.util.LongAccumulator 使用简介。原创 2023-01-10 19:27:20 · 576 阅读 · 3 评论 -
C++ / JNI - Spark 调用 JNI on Yarn
Spark 调用 JNI On Yarn 实战教程。原创 2023-01-06 17:41:51 · 832 阅读 · 5 评论 -
Spark / Scala - scala.collection.convert.Wrappers$MutableSetWrapper - no valid constructor
Scala Array、Set 转换为 Java.util.Set 踩坑与尝试。原创 2022-10-17 15:50:45 · 1223 阅读 · 2 评论 -
NoClassDefFoundError - hadoop/crypto/key/KeyProviderTokenIssuer && hadoop/fs/BatchListingOperations
NoClassDefFoundError - hadoop/crypto/key/KeyProviderTokenIssuer && hadoop/fs/BatchListingOperations 报错解决与总结。原创 2022-07-28 20:32:53 · 2888 阅读 · 0 评论 -
Spark - RangePartitioner rangeBounds 生成 源码分析 & 实践
本文主要探索RangePartitioner 源码中rangeBounds 的生成,rangeBounds 用于对 key 进行范围分区,通过源码可以学习到如何在分布式大数据下采样并获取近似均分的范围。原创 2022-07-14 10:01:01 · 532 阅读 · 0 评论 -
Spark - PartitionPruningRDD 详解
查看 RangePartition 的源码时发现内部用到了PartitionPruningRDD,翻译为分区修剪 RDD,下面简单介绍一下PartitionPruningRDD 的使用。原创 2022-07-12 19:13:46 · 590 阅读 · 0 评论 -
Spark - Illegal pattern component: XXX 与org.apache.commons.lang3.time.FastDateFormat incompatible
使用 sparkSession 读文件时出现java.lang.IllegalArgumentException: Illegal pattern component: XXX 报错,解决后又出现java.io.InvalidClassException: org.apache.commons.lang3.time.FastDateFormat; local class incompatible: stream classdesc serialVersionUID = 2,下面解决一下。...原创 2022-07-11 17:53:23 · 1387 阅读 · 0 评论 -
Spark - 一文搞懂 Partitioner
spark 处理 RDD 时提供了 foreachPartition 和 mapPartition 的方法对 partition 进行处理,一个 partition 内可能包含一个文件或者多个文件的内容,Partitioner 可以基于 pairRDD 的 key 实现自定义partition 的内容。原创 2022-06-30 19:03:44 · 1365 阅读 · 0 评论 -
Spark - Task 与 Partition 一一对应与参数详解
使用 spark 读取 parquet 文件,共有 M个 parquet 文件,于是启动了 PExecutor x QCores 进行如下 WordCount 代码测试,其中 P x Q = M 即 Core 数目与 parquet 文件数一一对应。原创 2022-06-28 14:37:46 · 1777 阅读 · 0 评论 -
Spark 实战 - 3.一文搞懂 parquet
parquet 文件常见于 Spark、Hive、Streamin、MapReduce 等大数据场景,通过列式存储和元数据存储的方式实现了高效的数据存储与检索,下面主要讲parquet 文件在 spark 场景下的存储,读取与使用中可能遇到的坑。......原创 2022-06-24 18:46:48 · 2093 阅读 · 0 评论 -
Spark - LeftOuterJoin 结果条数与左表条数不一致
使用 spark lefOuterJoin 寻找下发的 gap,用原始下发 rdd 左join 真实下发后发现最终的结果数与左表不一致,左表数据: 20350,最终数据: 25721。一直以来使用 Hive 都是默认 leftJoin 左表应该与结果一致,所以开始排查。......原创 2022-06-22 09:30:25 · 994 阅读 · 4 评论 -
Spark - Executor 初始化 && 报警都进行1次
程序启动 M个 Executor,每个 Executor 共 N core,即每个 Executor 上的 task = N,现在有一个 object 需要在每一个 task 上初始化公用变量,本文介绍如何只初始化一次以及异常情况下只报警一次的方法。原创 2022-06-20 10:31:38 · 616 阅读 · 0 评论 -
Spark - Logging 简单使用
使用 Spark 运行任务打日志经常遇到一个问题就是日志太多,除了自己的 print 日志之外,还有很多 Executor、client 的日志,一方面任务运行期间会占用更多的机器存储,其次也不方便查询自己的 print 日志。下面介绍下常用的日志系统与使用方法。......原创 2022-06-06 15:50:09 · 1471 阅读 · 3 评论 -
Spark/Scala - 读取 RcFile && OrcFile
上文提到了MapReduce - 读取 OrcFile, RcFile 文件,这里通过 Java + MapReduce 实现了读取 RcFile 和 OrcFile 文件,后续又遇到MapReduce - 同时读取 RcFile 和 OrcFile 的依赖冲突,也顺利解决,但是平常开发还是习惯 spark 所以改用 spark 实现读取 OrcFile 和 RcFile 以及 Map-Reduce 的功能。......原创 2022-04-21 08:14:53 · 1670 阅读 · 2 评论 -
Spark - ReturnStatementInClosureException: Return statements aren‘t allowed in Spark closures
Spark 使用 RDD 调用 Filter 函数时,dirver 端卡住,报错 ReturnStatementInClosureException: Return statements aren't allowed in Spark closures,即闭包内无法使用 return 函数。原创 2022-03-28 17:48:43 · 3010 阅读 · 0 评论 -
Spark - ml.dmlc.xgboost4j / spark 版本匹配与 NoSuchMethodError 解决
spark 项目引入 ml.dmlc.xgboost4j 训练并读取 xgboost 模型,load 模型期间报错 NoSuchMethodError,通过源码的分析得到 xgboost 与 spark 版本对应关系。原创 2022-03-18 18:56:44 · 2220 阅读 · 2 评论 -
Spark - ERROR StatusLogger No log4j2 configuration file found
一.引言scala 项目运行 kafka 相关程序时报警告,虽然不影响运行,但是强迫症看着十分难受,下面立即清除。ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.二.问题解决1.添加 log4j2.xmlloggers 里面可以配置 level<?xml version="1.0"原创 2021-12-22 13:05:57 · 1124 阅读 · 3 评论 -
Spark - parquet 加载时间过长 && parquet 指定 schema 无数据
Parquet是一种列式存储格式,常用语表结构数据存储,也是 sparkSql 的默认存储格式。spark 读取 parquet 文件时,偶发读取时间过长,正常 parquet 时间在 1-5 s,异常期间最长可达 10 min +,于是开始踩坑之旅,涉及 parquet 读取原理与 schema 配置方法。...原创 2021-12-15 20:11:15 · 2717 阅读 · 0 评论 -
Spark - RDD / ROW / sql.DataFrame 互转
一.引言SparkSql 相比较 HiveSql 具有更快的运行速度和更高的灵活性,平常使用中经常需要进行数据转换,常见的有 RDD[T] -> DataFrame,DataFrame -> RDD[T] 还有 RDD[row] -> sql.dataFrame,下面简单介绍下常用用法。初始化 SparkSession : // 1.配置Spark val conf = { if (local) new SparkConf().set原创 2021-12-13 20:13:53 · 4623 阅读 · 0 评论 -
Spark - SizeEstimator.estimate 字节估算之时间都去哪了
org.apache.spark.util.SizeEstimator 类提供了estimate 方法,该方法估计给定对象在JVM堆上占用的字节数。估计包括给定对象引用的对象占用的空间、它们的引用等。使用场景主要用于 spark 计算 broadCast 的内存容量,因为是estimate ,所以对于指定对象在 JVM 上占用的字节数只是估算,而非实际。...原创 2021-12-10 16:21:56 · 2175 阅读 · 0 评论 -
Spark - hadoop.mapred.InvalidInputException matches 0 files && sc.textFile 忽略空文件
spark 代码执行任务时需要读取一个依赖文件,文件执行时该文件状态未知,有可能存在也有可能是空文件夹,遂增加 Try Catch 进行包装,当 sc.textFile 读取异常时,返回 emptyRdd,但是实际执行中,代码并未进入 Try Catch 区域,且报错异常栈显示在 foreachPartition 对应代码位置,遂开始修复之旅。...原创 2021-12-08 16:07:31 · 1296 阅读 · 0 评论 -
Spark - BloomFilter 推导与工业界应用
BloomFilter 的原理推导与工业界【scala/java】的应用原创 2021-11-18 15:26:30 · 2181 阅读 · 0 评论 -
Spark - newAPIHadoopFIle 获取文件与文件路径 By Scala
一.引言离线日志通常使用 dt,hour,min 或者使用 timeStamp 作为累计文件的命名方式,对于文件日志中不包含时间戳或者时间信息的日志内容,为了获取其对应创建时间与文件属性,需要读取文件时同时获取其 File 对应的 FileSplit 类。二.实践1.思路A. sc.newAPIHadoopFile 读取输入获得 RDD[(LongWritable, Text)]B. asInstanceOf 转换为 NewHadoopRDD[LongWritable, Text].原创 2021-09-14 10:18:07 · 2438 阅读 · 0 评论 -
Spark : local 模式 org.apache.hadoop.conf.Configuration.getPassword(Ljava/lang/String;)[C
一.引言spark local[*] 模式下本地测试报错:Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.conf.Configuration.getPassword(Ljava/lang/String;)[C二.解决方案NoSuchMethodError 报错之前分析过类似解决步骤 :java.lang.NoSuchMethodError 之 依赖冲突解决方案,根据报错信息定位到..原创 2021-08-27 19:45:51 · 2218 阅读 · 0 评论 -
Spark RDD distinct 算子
一.引言使用spark很久第一次用到 distinct 算子,趁热打铁熟悉一下 distinct 的操作。二.源码原创 2021-05-29 16:51:50 · 2477 阅读 · 0 评论 -
Spark-HDFS 删除空文件 && 合并小文件
一.引言hive 执行任务后目录下生成过多小文件,过多的小文件会占用 namenode 的内存,对于 HDFS 非常不友好,所以可以通过删除空文件或者合并小文件的方法进行优化。二.删除空文件可以看到有很多空的gz,blockSize=20。如果是空文件的话,blockSize占用会是0。思路很简单,通过 listStatus 方法判断目标路径是文件还是文件夹,文件夹的话递归到下层文件,文件的话直接 getLen 获取大小,如果满足 blockSize,则进行删除 delete 操作.原创 2021-04-28 16:41:16 · 1482 阅读 · 0 评论 -
Spark : 堆外内存不足引发 CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM
一.引言:spark执行任务期间,偶发程序出现Failed,但是任务正常执行结束,查看error日志无程序内报错,只报了ERROR CoarseGraineExcutorBackend: RECEIVER SIGNAL TERM 。于是开始查找问题。二.排查任务之前正常执行未出现问题,最近在Excutor端修改代码,增加了Excutor端内存,大概率是因为内存问题导致,查看error日志无结果后,查看节点日志发现物理内存超出限制,导致内存超出的节点被Container Kill掉,于..原创 2021-04-19 20:03:32 · 9119 阅读 · 8 评论 -
Spark combineByKey 参数含义与性能测试
一.引言:combineByKey 是一个泛型函数,使用一组自定义的聚合函数组合每个键的元素,常见的聚合函数groupByKey就是以combineByKey为原型扩展的,更多地细节可以参考combineByKeyWithClassTag。二.源码与参数含义:/*Generic function to combine the elements for each key using a custom set of aggregation functions. This method i..原创 2021-04-17 19:05:46 · 448 阅读 · 0 评论 -
Spark On Yarn --jars/spark.yarn.jars 踩坑 与 提升spark submit速度
一.引言Spark submit 可以选择 --jars 传入本地的jar也可以 --jars 传入HDFS的jar包,经过半下午的实验,终于搞清了两者的关系以及 spark.yarn.jars 和它们的区别二.--jars的使用1.--jars 传入本地jar包--jars a.jar,b.jar,c.jar传入本地jar包时,只需要输入通道机的jar包地址即可,随后spark-submit脚本会执行Uploading resource的操作将本地的jar包拷贝到spar..原创 2021-04-14 17:20:09 · 5823 阅读 · 0 评论 -
Spark Streaming Receiver restart 重启
一.引言:Spark Streaming 支持通过 Receiver 自定义数据流,实现之后由于接受客户端的不稳定时常造成streaming程序的崩溃,最早的想法是在Receiver实现中加入try catch,通过异常处理使得数据不会中断,但是Receiver整体的中断还是会迫使程序退出,不受Reciver内部的Try Catch控制,所以需要新的策略重启Receiver,好在Spark官方早就给出了解决方案,下面看看怎么使用。二.源码:Spark Doc中共有三种restart方案,可.原创 2021-03-31 11:27:31 · 867 阅读 · 0 评论 -
Yarn: runtime.ContainerExecutionException: Launch container failed 踩坑
引言:Spark Submit 提交任务后,Dirver端代码正常执行,但是到Excutor阶段程序卡住,频繁报错,直至任务Failed定位:日志failed位置打印了很多warning:初始作业未接受任何资源;请检查群集UI以确保工作进程已注册并且有足够的资源,初步分析是资源问题,随后yarn logs把日志拉下来看看:JVM 初始heap size设置的超过了最大的heap size,查看任务 Environment 查明真相:解决:JVM的初始...原创 2021-03-23 15:43:50 · 3201 阅读 · 0 评论 -
HBase doBulkload by Scala
引言:Hbase 存储数据时,如果数据量不大可以通过 Get 批量载入,当数据量够大时可以采用 Bulkload 方式,提高载入效率。Bulkload 就像 Hive 的 load 一样,提供好规定格式的文件即可。主程序:这里生成的 HFile 是 keyValue 形式的,Get形式也可以,实现起来需要用到 mr。需要注意的是 HFile 要存储在 HBase 相对应集群下。1.配置 Spark 与 Hbase 连接 val argsMap = ArgsUtil.pars.原创 2021-02-08 16:35:18 · 400 阅读 · 3 评论 -
Spark Submit --files 添加文件
一.引言当一个分布式任务中一个文件需要在全局使用时,最常见的方法就是使用广播的形式,在dirver端读取随后分发到excutor,这里需要的时间是1) dirver端读取文件时间2) 广播分发到各excutor的时间当文件大小逐渐增加到一个阈值,或者内存资源有瓶颈时,广播的时间就会变长,这时候就需要和下面这种方式进行比较,看哪种方式时间最快1) --files 添加文件2) 直接在excutor读取文件,各个task使用二.Spark Submit 脚本 --filse 添.原创 2020-12-31 11:55:47 · 7917 阅读 · 0 评论