Spark
文章平均质量分 72
KD_
这个作者很懒,什么都没留下…
展开
-
SimpleDateFormat和Table(HBase)的并发问题
背景最近项目里出现了两个bug,找了很久,最后发现都是因为多线程并发导致的问题,所以在此记录。项目主要是做时空数据库,点线面等时空数据的查询。问题描述:对于点数据,我们在导入HBase时,会对其进行进行时空编码(time + Zorder)作为Rowkey,但是在利用时空索引进行时空查询时,竟然出现了不在时间范围内的点数据。在对HBase进行scan查询时,由于时空范围的分解会生成多个scan range,所以利用线程池提交多个查询任务进行并发查询,但是最后查询的会漏查一些数据。解决对于第原创 2021-05-31 16:49:44 · 176 阅读 · 0 评论 -
Spark 类加载器导致的Kryo序列化问题
文章目录背景Spark类加载器MutableURLClassLoader和ChildFirstURLClassLoaderMutableURLClassLoaderChildFirstURLClassLoader问题分析验证背景最近项目中设计到Spark BulkLoad Hbase,需要将一个自定义类的对象序列化成字节数组,存到Hbase中。考虑到Spark自带了java通用的Kryo序列化框架,所以参考网上的代码用Kryo实现了一个通用的序列化方法 public class KryoUtils {原创 2021-05-25 17:12:42 · 1391 阅读 · 5 评论 -
Spark 3.0 AQE(Adaptive Query Execution)
Spark Adaptive Execution数据倾斜?Spark 3.0 AQE专治各种不服原创 2021-04-19 15:12:50 · 166 阅读 · 0 评论 -
Apache Sedona(GeoSpark) spatial join 源码解析
文章目录Apache Sedona(GeoSpark) Spatial JoinRange joinDistance join源码解析SedonSQLRegistrator.registerAll(sparkSession)JoinQueryDetectorplanSpatialJoinplanDistanceJoinTraitJoinQueryExecdoExecute1. 构造SpatialRDD2. doSpatialPartitioning3. spatialJoin4. extraConditio原创 2021-04-06 17:13:32 · 1518 阅读 · 0 评论 -
《SparkSQL内核剖析》阅读笔记
SparkSQL 简介Spark SQL执行过程SparkSQL 内部体系结构SparkSQL 编译器 ParserSparkSQL 逻辑计划 LogicalPlanSparkSQL 物理计划 PhysicalPlanSparkSQL Tungsten 技术实现SparkSQL Aggregation实现SparkSQL Join 实现原创 2021-03-15 17:27:29 · 378 阅读 · 0 评论 -
scala版本不一致:java.lang.NoSuchMethodError: org.apache.spark.sql.execution.datasources.FileFormat.$init$
这是最近将代码放到服务器环境上运行时出现的错误。java.lang.NoSuchMethodError除了可能真的是找不到对应方法,也有可能是语言、框架版本不一致所导致的问题。我的问题在于本地环境scala使用的是2.12.10,但是服务器上的spark是2.11_2.4.4版本,所以在本地将scala换成2.11.8版本,重新编译即可。...原创 2021-02-26 17:48:06 · 1829 阅读 · 1 评论 -
Spark DataSource 源码解析
文章目录SparkSession.read()DataFrameReaderformatschemaoptionjson、csv、text...loadDataSource.lookupDataSourceDataFrameReader.loadV1SourceDataSource.resolveRelationSparkSession.baseRelationToDataFrame数据源有关的StrategyFileSourceStrategyFileSourceScanExecDataSourceStr原创 2021-01-08 15:19:59 · 1027 阅读 · 0 评论 -
Spark与MapReduce的对比误区与真正优势
Spark与MapReduce对比误区经常听到有人说Spark基于内存计算,将中间结果保存在内存中,避免了磁盘IO的次数。我觉得这句话的表面意思都对,但是很多人并没有了解其真正的含义。知乎: https://www.zhihu.com/question/319306621.Spark是基于内存计算的,难道MapReduce不是基于内存计算的吗?什么是内存计算,如果是指把磁盘中的数据读取到内存中做计算的话,那么MapReduce肯定也是内存计算。Spark的特殊之处在于可以将RDD缓存到内存之中,下次原创 2021-01-06 14:02:14 · 1039 阅读 · 2 评论 -
Spark读取HBase的方法
文章目录读取利用TableInputFormat读取TableInputFormat原理利用TableSnapshotInputFormat读取TableSnapshotInputFormat原理利用Spark-Hbase-connector读取Spark-Hbase-connector原理总结读取利用TableInputFormat读取 Base64.Encoder base64Encoder = Base64.getEncoder(); String sparkMaster = "loca原创 2020-12-20 13:44:39 · 6264 阅读 · 1 评论 -
SparkSQL InternalRow
文章目录lnternalRow 体系数据源 RDD[lnternalRow]Shuffle RDD[InternalRow]Transform RDD[InternalRow]强类型化转换算子利用内置的schmea隐式转换算子连续的强类型化转换算子Encoder对InternalRow的影响总结SparkSQL在执行物理计划操作RDD时,会全部使用RDD<InternalRow>类型进行操作。lnternalRow 体系在SparkSQL 内部实现中, InternalRow 就是用来表示原创 2020-12-16 16:32:24 · 1498 阅读 · 0 评论 -
Spark 任务调度和FIFO、FAIR调度源码分析
文章目录Application调度Job调度FIFO模式FAIR模式配置调度池FIFO和FAIR调度源码分析TaskScheuduler.initializeSchedulableBuilderPool.getSortedTaskSetQueueSchedulingAlgorithmStage和TaskSetManager调度方式Stage划分TaskSetManager调度Task调度Application调度Spark每个Application拥有对应的SparkContext.SparkConte原创 2020-07-08 03:40:15 · 495 阅读 · 0 评论 -
Spark读取文件 schema注意点
spark读取文件时关于schema的注意点.option(“inferSchema”,“true”) 模式推理会导致加载两倍的源数据使用ByteType只能解析范围在[-128,127]内的整数,对于大于127的整数解析为null,并且会造成同行所有的列都被解析为null;所以应该使用IntegerType解析RGB列。由于谓词下推导致不会被解析的数据列,即使DataType指定有误,...原创 2020-04-30 15:22:20 · 2198 阅读 · 0 评论 -
HBase BulkLoad Spark实现过程及一些问题
文章目录HBase储存原理BulkLoadMaven重复依赖maven对于重复依赖的处理方式解决方案Spark导入HBase classpathHBase储存原理HBase存储数据其底层使用的是HDFS来作为存储介质,HBase的每一张表对应的HDFS目录上的一个文件夹,文件夹名以HBase表进行命名(如果没有使用命名空间,则默认在default目录下),在表文件夹下存放在若干个Region命...原创 2020-04-25 19:38:49 · 853 阅读 · 3 评论 -
Spark代码生成-全阶段代码生成
文章目录CollapseCodegenStages规则WholeStageCodegenExecCodegenSupportconsume/doConsume 和 produce/doProduceinputRDDsWholeStageCodegenExec执行过程WholeStageCodegenExec.doExecute()WholeStageCodegenExec.doCodeGenpro...原创 2020-04-13 00:29:23 · 2544 阅读 · 0 评论 -
SparkSQL代码生成 - 基本表达式代码生成源码解析
文章目录代码生成JavaCode和BlockExprValueExprCodeCodegenContextmutableStatespartitionlnitializationStatementsreferencesaddedFunctions其他方法CodeGeneratorgenerate表达式代码生成实例GeneratePredicatebind(GeneratePredicate)cre...原创 2020-04-12 13:47:28 · 1541 阅读 · 0 评论 -
Spark内存管理的思考
基本配置静态内存管理spark.storage.memoryFraction 默认0.6 storage内存区域spark.shuffle.memoryFraction 默认0.2 executor内存区域统一内存管理spark.memory.fraction 默认0.6 storage和executor可用内存spark.memory.storageFract...原创 2020-04-11 01:26:12 · 486 阅读 · 0 评论 -
Spark 空间数据管理的一些思考
概述Spark对空间数据的管理的两个重要方面:数据分区和数据索引数据分区数据分区有几个重要的关注点:空间邻近性、数据覆盖完整性、数据均匀分布、数据冗余空间数据的分区方案一般使用空间索引,控制每一个索引数据项中的数据量,把每一个索引项中的数据作为一个分区,这样可以保证分区中的具有数据良好的空间邻近性。分区空间邻近性有利于使用部分分区即可完成进行空间查询、连接等操作。为了得到具体的分区结果,...原创 2020-04-09 10:23:18 · 632 阅读 · 0 评论 -
SparkSQL 源码解析 SparkPlanner
文章目录物理计划转换过程SparkPlan分类LeafExecNodeUnaryExecNodeBinaryExecNode其他类型的 SparkPlanSparkPlannerPlanLaterplanSparkStrategy.applycollectPlaceholdersplaceholders解析prunePlans总结物理计划转换过程从 Optimized LogicalPlan传...原创 2020-03-30 21:16:24 · 698 阅读 · 0 评论 -
SparkSQL Analyzed实例源码解析
文章目录Unresolved LogicalPlanUnresolvedRelationFilterProjectResolveRelationsresolveOperatorsUp(LogicalPlan继承至TreeNode)resolveRelation:具体的解析规则(ResolveRelations)lookupTableFromCatalog(ResolveRelations)look...原创 2020-03-30 01:28:57 · 721 阅读 · 0 评论 -
SparkSQL源码解析 Analyzer
文章目录Unresolved LogicalPlanRule示例RuleExecutorAnalyzerUnresolved LogicalPlan经过 AstBuilder 的处理,可以将实例SQL所对应的抽象语法树解析为逻辑算子树 Unresolved LogicalPlan。逻辑算子树中未被解析的有 UnresolvedRelation 和 UnresolvedAttribute 两种对...原创 2020-03-28 23:00:09 · 602 阅读 · 1 评论 -
SparkSession解析SessionCatalog、SharedState和SessionState
文章目录CatalogSessionCatalogSessionCatalogHiveSessionCatalogExternalCatalogInMemoryCatalogHiveExternalCatalogSparkSession初始化SharedStateSessionStateBaseSessionStateBuilderSessionStateBuilder和HiveSessionSt...原创 2020-03-28 16:00:21 · 3464 阅读 · 0 评论 -
Spark Sort-Based Shuffle源码分析
Spark源码分析之Sort-Based Shuffle读写流程spark 2.3源码分析之SortShuffleWriterspark源码分析之BypassMergeSortShuffleWriterspark源码分析之UnsafeShuffleWriter原创 2020-03-16 22:24:43 · 101 阅读 · 0 评论 -
Spark --files理解
Spark --files作用使用方法添加文件获取文件原理注意事项作用加载外部资源文件,在driver和executor进程中进行访问。使用方法添加文件spark-submit --files file_paths其中file_paths可为多种方式:file:,hdfs://,http://,ftp://,local:,多个路径用逗号隔开获取文件获取文件路径:filePath...原创 2020-03-10 14:21:55 · 8776 阅读 · 3 评论 -
GeoSpark 介绍与解析
1、GeoSpark简介GeoSpark是一个用于处理大规模空间数据的开源内存集群计算系统。是传统GIS与Spark的结合。GeoSpark由三层组成:Apache Spark层、Spatial RDD层和空间查询处理层。Apache Spark Layer:Apache Spark层由Apache Spark本地支持的常规操作组成。它包括将数据加载、存储到磁盘 (例如,存储在本地磁盘或Ha...原创 2020-03-13 16:08:23 · 2669 阅读 · 1 评论 -
Spark Shuffle 解析-Hash Shuffle和Sort Shuffle
概述Spark Shuffle分为Hash Shuffle和Sort Shuffle。Hash Shuffle是Spark 1.2之前的默认Shuffle实现,并在Spark 2.0版本中被移除。因此,了解Hash Shuffle的意义更多的在于和Sort Shuffle对比,以及理解为什么Sort Shuffle能够完全取代Hash Shuffle。Spark 1.2起默认使用Sort S...原创 2020-03-12 00:14:20 · 1569 阅读 · 0 评论