- 博客(40)
- 收藏
- 关注
原创 Java基础
语言特点:Java 是一种面向对象的编程语言,具有平台无关性(通过 JVM 实现“一次编写,到处运行”)、安全性、稳定性和丰富的类库支持。发展历程:自 1995 年发布以来,Java 经历了多个版本的迭代,目前主要用于企业级开发、移动应用(Android)以及大数据处理等领域。
2025-03-29 21:48:06
922
原创 Spark3性能优化指南
传统 Shuffle 分区数固定(默认 200),导致小文件问题(HDFS 块利用率<30%)或数据倾斜(单分区数据超 10GB)。:某电商平台在 1TB 订单数据清洗作业中,通过将初始分区数设为 2000,AQE 自动合并至 420 个分区,Shuffle 耗时从 58 分钟降至 12 分钟。AQE 是 Spark 3.x 的核心动态优化引擎,通过运行时统计信息重构执行计划,在超大规模数据处理(PB 级)中可提升 40%-70% 性能。:识别倾斜分区(阈值:分区大小 > 中位数×5 且 >256MB)
2025-03-09 15:03:48
945
原创 技术金字塔:你在哪一层?
唯有持续进化,方能在这场技术浪潮中站稳脚跟。中级岗位(占比30%-35%)需掌握分布式架构、云原生(K8s/微服务)等技能,但多数停留在“熟练工”阶段,高级/专家级(5%-10%、1%-3%):需主导百万级用户项目,兼具技术深度与业务洞察力,全球范围内供不应求。初级工程师(50%-60%):需独立完成模块开发,但培训班出身者多缺乏复杂问题解决能力。中级工程师(30%-35%):需主导模块设计,但仅40%掌握分布式系统调优。(初级70%、中级25%、高级5%),但中国受行业扩张速度影响,实际呈现。
2025-02-28 22:04:40
503
原创 涉及Spring 生态、分布式架构、安全框架,以及 Dubbo & ZooKeeper 的对比
Spring Cloud + Spring Security + ZooKeeper + Dubbo(或 gRPC)Spring Cloud 是基于 Spring Boot 的微服务架构解决方案,提供分布式系统的完整支持。Spring Boot 是基于 Spring 框架的微框架,旨在简化 Spring 应用的开发和部署。:Spring Boot + Spring Security(或 Shiro)+ Dubbo。:服务发现(Eureka)、负载均衡(Ribbon)、熔断(Hystrix)
2025-02-23 13:16:23
945
原创 标签类目体系
数据资产的商业化已成为企业数字化转型的关键。通过构建完善的标签类目体系与高效的ID‐Mapping技术,企业不仅可以打通跨平台、跨设备的数据孤岛,还能实现数据资产的高效复用和商业化应用。未来,我们期待看到越来越多的企业通过数据治理与中台建设,将数据真正转化为推动业务增长、提高盈利能力的重要资源,为整个行业的智能化升级注入源源不断的动力。
2025-02-16 21:31:05
896
原创 hive和presto的SQL对比
Presto使用的内存管理技术是基于内存池的,可以更好地管理内存的分配和释放。假如一个Query需要消耗100GB的内存,这就超过了整个集群的内存了,那么Presto的coordinator就直接卡掉这个查询,防止。查询优化:Presto使用了一系列的查询优化技术,如谓词下推、列裁剪、分区裁剪等,可以减少数据的传输和处理,从而提高查询性能。社区支持:Presto有一个活跃的社区,不断地更新和维护代码,修复bug和增加新功能,保证了Presto的稳定性和可靠性。Presto(或PrestoDB)
2024-08-06 14:52:56
180
1
原创 Redis
关系型结构太复杂,数据库,表,字段,类型,主键,外键,索引,表之间关系。Redis Sentinel(哨兵)是一个用于监控和管理 Redis 高可用性的系统,它能够自动检测主节点的故障并进行切换,以确保系统的持续可用性。Sentinel 定期监测 Redis 主节点和从节点的健康状态,如果发现主节点不可用,会自动将一个从节点升级为新的主节点。当主节点不可用时,Sentinel 会自动从可用的从节点中选举一个作为新的主节点,从而保证系统的可用性。当主节点故障时,哨兵会自动完成切换过程,无需人工介入。
2024-08-06 14:50:42
422
原创 Hbase Distcp
需要注意的是,distcp命令只会复制表的数据,不会复制表的结构。因此,在执行distcp之前,确保在目标HBase集群上创建了与源表结构相同的表。此外,如果源表包含任何的HBase过滤器或者复杂的结构,可能需要额外的处理来保证数据的完整性。但是,实际的map数可能会受到其他因素的影响,比如输入数据的大小、文件数量等。参数指定 HFile 文件的保存路径,但该参数似乎与指定的保存路径重复,可能需要进一步确认或调整。确保源和目标HBase集群的连接参数正确配置,并且目标集群上已经准备好了要导入的表的空间。
2024-08-06 14:48:39
552
原创 数据仓库建模
周期快照事实表一般是建立在事务事实表之上的聚集,维度比事务事实表少,粒度比事务事实表粗,但是由于对事实进行了多种形式的加工从而产生了新的事实,故一般事实会比事务事实表多。不管事实表对应一个还是多个业务过程,粒度必须是确定的,每个事实表都有且只能有唯一的粒度,粒度是事实表的每一行所表示的业务含义,是事实的细节级别。粒度的声明是事实表设计中不可忽视的重要一步,粒度用于确定事实表中一行所表示业务的细节层次,决定了维度模型的扩展性,在选择维度和事实之前必须先声明粒度,且每个维度和事实必须与所定义的粒度保持一致。
2024-08-06 14:27:41
1622
原创 数据湖调研
数据湖(Data Lake)是一种大数据存储架构,它允许存储大量不同类型和格式的数据,并支持用于数据分析和机器学习的高级查询和处理。数据湖是为了解决大数据场景下的遗留问题而产生的,为打破数据孤岛而诞生。数据湖的特点如下:灵活性。数据湖可以容纳不同类型和格式的数据,不需要先进行结构化处理,强调原始数据的存储和管理。分布式存储。通常使用分布式文件系统,如Hadoop或Amazon S3作为底层存储引擎,数据可以以原始格式存储,例如JSON、CSV或Parquet等。成本效益。
2024-08-06 14:25:53
1861
原创 数据挖掘与数据分析
1、数据挖掘(Data Mining)数据挖掘是指对大规模数据进行分析,以发现其中潜在的模式、规律或关联性的过程。其目的在于从数据中提取有价值的信息,以支持决策制定、预测未来趋势等。数据挖掘涉及多种技术和方法,包括机器学习、统计分析、数据库技术等。2、数据分析(Data Analysis)数据分析是指对数据进行收集、清洗、转换和建模等处理,以获得对问题的洞察和理解的过程。数据分析旨在揭示数据背后的意义,为决策提供支持和指导。它可以采用多种统计和计算方法,如描述性统计、推断统计、预测分析等。
2024-08-06 14:21:55
2775
原创 指标体系梳理
指标是说明总体数量特征的概念及其数值的综合。针对某一具体事物或行为进行量化描述的数值。维度是指标的属性或者特征,同时也是指标的必要定语。时间维度从低层到高层包括日、周、月、季度、年度等。地区维度从低层到高层包括区/县、市、省、国家等。当然还可以根据自己业务需要重新定义和划分。准确性 :一个指标最要的就是能否准确的进行统计,如果这点满足不了,其他一切免谈,否则只会搬起石头砸自己的脚。可比较性:是指有维度可比较,比如同期比较,不同地区比较,如果没有比较,指标也没有意义。
2024-08-06 14:20:40
818
原创 元数据管理
元数据(Meta Data),主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及 ETL 的任务运行状态。业务元数据为管理层和业务分析人员服务,从业务角度描述数据,包括商务术语、数据仓库中有什么数据、数据的位置和数据的可用性等,帮助业务人员更好地理解数据仓库中哪些数据是可用的以及如何使用。技术元数据为开发和管理数据仓库的 IT 人员使用,它描述了与数据仓库开发、管理和维护相关的数据,包括数据源信息、数据转换描述、数据仓库模型、数据清洗与更新规则、数据映射和访问权限等。
2024-08-06 12:31:58
672
原创 实时数仓设计
Canal 是用java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,Canal 主要支持了 MySQL 的 Binlog 解析,解析完成后才利用Canal Client 来处理获得的相关数据。(数据库同步需要阿里的Otter 中间件,基于Canal)。Canal 的工作原理,是把自己伪装成 Slave,假装从Master 复制数据MySQL 主从复制过程Master 主库将改变记录,写到二进制日志(Binary log)中。
2024-08-06 12:30:01
474
原创 Spark读取hive表元数据异常
在ETL接入数据时,需要对表新增字段,因为表的特殊性质,存在实时接入更新三个月历史数据的情况,故该表的小文件很多,在通过hive增加字段的时候,spark没有立即生效,导致用hive命令修改元数据后, hive表的元数据信息和spark-SQL的schema不一致。考虑到之前执行refresh的时候有进行小文件合并,中间有杀掉小文件合并进程,有可能是影响了refresh,故再进行了小文件合并后又重新执行了refresh,才成功了,且最后一个是通过spark shell执行的。命令用于刷新表的元数据。
2024-08-06 10:36:56
992
原创 StarRocks
Spark load 是一种异步导入方式,需要通过 MySQL 协议创建导入作业,并通过SHOW LOAD 查看导入结果。明细表包含所有原始的导入数据,因此可对明细表进行任意维度分析,而物化视图正是为了解决明细表的任意维度分析的预先聚合而提出,同时物化视图的功能是RollUp表的超集,原有的RollUp功能都可通过物化视图来实现。为适配不同的数据导入需求,StarRocks 系统提供了5种不同的导入方式,以支持不同的数据源(如HDFS、Kafka、本地文件等),或者按不同的方式(异步或同步)导入数据。
2024-08-06 10:33:54
1233
原创 Clickhouse
在我们的业务场景中,商品维度是千万级别,用户维度是亿级别,经过测试,在实时点击流中,由于数据流量比较大,关联用户信息会出现查询超时导致关联不上的场景,因为我们砍掉了实时数据的用户维度,而选择在ClickHouse进行结果数据查询时再利用Local Join的优势来关联用户维度。在使用订单实时数据时,我们会在表名后增加final关键字,确保读取到最新的数据。我们有3个分片节点,有一张本地表t_data_local,共100W数据,那么节点1可能存储30W数据,节点2有20W数据,节点3有50W数据;
2024-08-06 10:27:30
1484
原创 Flink基础
Apache Flink是一个同时支持分布式数据流处理和数据批处理的大数据处理系统。Flink可以表达和执行许多类别的数据处理应用程序,包括实时数据分析,连续数据管道,历史数据处理(批处理)和迭代算法(机器学习,图表分析)以及容错的数据流。Flink提供了诸多更高抽象层的API以便用户编写分布式任务:DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。
2024-08-06 10:22:20
507
原创 Hadoop使用
HDFS:HDFS是Hadoop的核心组件,HDFS上的文件被分成块进行存储,默认块的大小是64M,块是文件存储处理的逻辑单元。MapReduce:MapReduce的工作原理用一句话概括就是,分而治之,然后归约,即将一个大任务分解为多个小任务(map),并行执行后,合并结果(reduce)。Hadoop是使用Java编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache的开源框架。#统计文件数量,返回的数据是目录个数,文件个数,文件总计大小,输入路径。
2024-08-06 10:16:08
693
原创 Hbase实践
HBase 中的行是按照 rowkey 的字典顺序排序的,这种设计优化了 scan 操作,可以将相关的行以及会被一起读取的行存取在临近位置,便于 scan。比起传统的关系型数据库,可以存储半结构化非结构化的数据,可以存储和处理更大级别的数据,提供高效的查询,对于稀疏数据的处理更好,具有更好的横向扩展性,免费开源性价比很高。rowkey 是按照字典顺序排序存储的,因此,设计 rowkey 的时候,要充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问 的数据放到一块。
2024-08-06 10:12:23
728
原创 BI工具介绍
由Airbnb开源的数据可视化工具,支持数据报表、临时查询、数据分析等功能。提供丰富的图表类型和自由度。开发者:Airbnb开源项目,使用Python开发版本迭代较快,有较高的颜值提供数据可视化功能,支持数据报表、查询和数据分析通过共享数据集和查询,以开放的方式共享数据,允许分叉和生成新的数据集支持图表、数据透视表、队列等可视化方式可能在颜值和交互性方面表现较好FineBI和Tableau在不同方面都有各自的优势和特点。选择适合的BI工具取决于企业的需求、用户的技术水平以及预算等多种因素。
2024-08-05 19:58:06
884
原创 即席查询对比
大的事实表采用天分区增量构建,为了不影响查询性能,可以定期做合并(Merge),周期可以根据实际情况确定。对于维表比较大的情况,或者查询Select部分存在复杂的逻辑判断,存在Apache Kylin不支持的函数或语句时,可以将事实表和维表的关联处理创建为Hive视图,之后根据视图创建Cube模型。每次查询必然带有的条件建议在字典设置步骤将其设置为Mandatory。这样会最终 Build出来Cube的大小会减少一半。Cube的维度如果超过10个,建议将常用的聚合字段做分组。
2024-08-05 19:56:52
682
原创 Flume
flume是分布式的,可靠的,用于从不同的来源有效收集 聚集 和 移动 大量的日志数据用以集中式的数据存储的系统。是apache的一个顶级项目。
2024-08-05 19:53:13
302
原创 ElasticSearch部署
问题原因:因为Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。详见 :https://github.com/elastic/elasticsearch/issues/22899。修改kibana.yml配置,添加elasticsearch.ssl.verify: false。修改 /etc/security/limits.d/90-nproc.conf。创建elastic用户。
2024-08-05 19:51:15
334
原创 Linux常用命令
1:搜索某个文件里面是否包含字符串,使用grep "search content" filename1, 例如。格式: sed -i “s/查找字段/替换字段/g” grep 查找字段 -rl 路径。移动光标前请先按下ESC键,然后shift+$是移动到行尾,0是移动到行首。2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。4.ESC 按两次,会在每行的选定的区域出现插入的内容。2、>> 是在文件内容后面追加新内容,即追加重定向。
2024-08-05 19:50:04
918
原创 Azkaban用户手册
这边的是传入参数,由于azkaban.flow.start.day这个参数是执行job前会自动加载的,在job文件中直接赋值给了day,就不用在这边添加了。可以查看job运行时间,依赖和日志,点击details可以查看各个job运行情况。老的版本只支持一个执行器,3.0.0以上版本支持多执行器,一个执行器挂掉,不影响任务执行,多台机器同时也分担了压力。Azkaban是一中调度任务,可以清晰的看到每天任务跑的状况和日志,分为web端和exe端。点击他的id可以查看到详细的流程。然后查看当前运行的任务。
2024-08-05 19:22:32
686
原创 Kafka基础
Apache Kafka是一种分布式的、基于发布/订阅的消息系统,由Scala语言编写而成。最初由LinkedIn开发,并于2011年初开源。是目前主流的分布式消息引擎及流处理平台,常用作消息总线,实时数据管道,存储系统Kafka 主要起到削峰填谷(缓冲)、系统解构以及冗余的作用。
2024-08-05 18:58:52
704
原创 常用BI工具对比
由Airbnb开源的数据可视化工具,支持数据报表、临时查询、数据分析等功能。提供丰富的图表类型和自由度。开发者:Airbnb开源项目,使用Python开发版本迭代较快,有较高的颜值提供数据可视化功能,支持数据报表、查询和数据分析通过共享数据集和查询,以开放的方式共享数据,允许分叉和生成新的数据集支持图表、数据透视表、队列等可视化方式可能在颜值和交互性方面表现较好FineBI和Tableau在不同方面都有各自的优势和特点。选择适合的BI工具取决于企业的需求、用户的技术水平以及预算等多种因素。
2024-08-05 17:52:12
601
原创 数据治理基础
数据脱敏方式中的重要一环是进行数据加密 数据加密方式是 在携程集团的神盾加密基础上加密 主要加密范围是在订单、流量、日志中的所有用户个人敏感数据 集团神盾加密的用户数据包括个人的证件号、手机号、电话、邮箱、地址 并支持根据用户要求进行个人信息数据删除操作 该项举措是为了遵守 GDPR 欧盟个人数据保护法要求。 建立数据字典,解释数据项的含义和用途。通过数据共享管理,组织可以更好地利用数据资源,提高数据的价值和应用范围,促进数据的创新和发展,有效地支持组织的业务决策和发展。
2024-08-05 17:49:35
685
原创 Hive基础
它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。元数据(Meta Date),主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及 ETL 的任务运行状态。row_number():从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列;相同的数据汇入到一个桶内,在join时直接读取桶内的所有数据,不用全表扫描。
2024-08-05 17:38:40
44
原创 YARN与MapReduce
yarn是一个资源管理、任务调度的框架。改大task的堆内存分配,即调大mapreduce.map.java.opts / mapreduce.reduce.java.opts两个参数的Xmx值。单个任务可申请的最少物理内存量,默认是1024(MB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数yarn.scheduler.increment-allocation-mb。mapreduce.map.memory.mb和 mapreduce.map.java.opts 建议0.75。
2024-08-05 17:26:47
28
原创 Flink常用参数
路径必须指定协议(例如file://),并且在所有节点上都可以访问(例如通过NFS共享)。要连接到的JobManager地址。使用此标志可以连接到与配置中指定的JobManager不同的JobManager。如果复原的程序,对逻辑做了修改,比如删除了算子可以指定allowNonRestoredState参数复原。如果您从程序中删除了保存点触发时属于程序一部分的操作符,则需要允许这样做。可选标志,用于覆盖配置中指定的默认值。job需要指定env的并行度,这个一般都需要设置。需要指定的main方法的类。
2024-08-05 12:34:04
328
原创 SparkSQL Join优化
在实际计算时,spark会基于streamIter来遍历,每次取出streamIter中的一条记录rowA,根据Join条件计算keyA,然后根据该keyA去buildIter中查找所有满足Join条件(keyB==keyA)的记录rowBs,并将rowBs中每条记录分别与rowAjoin得到join后的记录,最后根据过滤条件得到最终join的记录。这样对小表的查找相对更优。left anti join与left semi join相反,是以左表为准,在右表中查找匹配的记录,如果查找成功,则返。
2024-08-05 12:30:43
978
原创 数据质量管理
概念数据质量管理不是一时的数据治理手段,而是循环的管理过程。数据质量管理不仅包含了对数据质量的改善,同时还包含了对组织的改善。数据质量管理不单纯是一个概念,也不单纯是一项技术、也不单纯是一个系统,更不单纯是一套管理流程,数据质量管理是一个集方法论、技术、业务和管理为一体的解决方案。用一种很抽象的比喻描述,如果把整个数据应用比作人体的话,那好的数据就相当于新鲜和沸腾的血液,能让我们的身体充满活力,高效地工作思考。
2024-08-05 11:59:25
565
原创 Shuffle Key对落盘文件影响分析
故在触发shuffle的过程中因key的不同,例如单个字段做key的重复率会更高、多个字段做key的重复率会降低。ORC存储过程中,记录会被横向切分成多个stripes,每个stripes内的数据以列为单位进行存储,所有列的内容保存在同一个文件中,通过配置对block压缩,设置HDFS的每个block存储ORC文件的一个stripe。在建立数仓体系过程中,采用ORC+SNAPPY存储,单分区文件大小TB级别,对比前后依赖表以及同样体量的表,只有GB级别,故对这种情况产生怀疑,进行验证。
2024-08-05 11:53:19
576
原创 IDEA新建多模块Maven项目 (Java与Scala)
File=>Project Structure=>Modules=>+=>Scala=>选择一个Scala。File=>Project Structure=>Libraries=>+=>Scala SDK=>选择一个Scala…pom文件中添加以下内容,打的包里才会包含java和scala的class文件,不加只会又java的。然后右键=>Mark Directory as=>Sources Root。多模块项目,代码是在各个模块的,可以把根模块的源代码目录删除。多模块情况下可以修改子模块的pom文件。
2024-08-04 23:46:47
557
原创 Hive常用参数
如果hive.merge.mapfiles为真,这只会用于仅映射作业,如果hive.merge.mapredfiles为真,这只会用于map-reduce作业。但是,如果它是打开的,并且n-way连接的n-1个表/分区的大小之和小于此大小,则连接将直接转换为mapjoin(没有条件任务)。选项有:mr (Map Reduce,默认),tez (tez执行,仅适用于Hadoop 2),或spark (spark执行,适用于Hive 1.1.0以后)。小表的最大文件大小,默认为25000000,即25M。
2024-08-04 23:39:23
477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人