自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

原创 Hudi(六)集成Hive

Hudi源表对应一份HDFS数据,通过Spark,Flink组件或者HudiCLI,可以将Hudi表的数据映射为Hive外部表,基于该外部表,Hive可以方便的进行实时视图,读优化视图以及增量视图的查询。

2023-06-01 22:36:59 963

原创 Hudi(五)集成Flink(3)

12、离线compaction

2023-05-31 22:40:20 825

原创 Hudi(四)集成Flink(2)

当前表,即读取最新的全量快照数据并一次性返回。通过参数 read.streaming.enabled 参数开启流读模式,通过 read.start-commit 参数指定起始消费位置,支持指定 earliest 从最早消费。

2023-05-31 22:21:08 1003

原创 Hudi(三)集成Flink(1)

将编译好的jar包放到Flink的lib目录下。

2023-05-22 21:57:14 1013 1

原创 StarRocks与ClickHouse

1、开源OLAP综述如今的开源数据引擎多种多样,不同种类的引擎满足了我们不同的需求。现在ROLAP计算存储一体的数据仓库主要有三种,即StarRocks(DorisDB),ClickHouse和Apache Doris。应用最广的数据查询系统主要有Druid,Kylin和HBase。MPP引擎主要有Trino,PrestoDB和Impala。这些引擎在行业内有着广泛的应用。2、开源数仓解决方案接下来,我们讲讲开源大数据以及数仓的解决方案。上图是EMR的整...

2022-04-18 21:00:25 4192 1

原创 Flink SQL 常用调优

1、建表1.1、JDBC connection.max-retry-timeout 可选 60s Duration 最大重试超时时间,以秒为单位且不应该小于 1 秒。 scan.partition.column 可选 (none) String 用于将输入进行分区的列名。请参阅下面的分区扫描部分了解更多详情。 scan.partition.num 可选 (none) Integer

2022-04-14 23:14:11 3615

原创 数据治理(二)

1、数据质量1.1、概述在大数据早期,做数据治理最主要的目的,就是为了提升数据质量,让报表、分析、应用更加准确。到今天,虽然数据治理的范畴扩大了很多,我们开始讲数据资产管理、知识图谱、自动化的数据治理等等概念,但是提升数据的质量,依然是数据治理最重要的目标之一。因为数据要能发挥其价值,关键在于其数据的质量的高低,高质量的数据是一切数据应用的基础。在数据质量不高的环境下,做数据分析可谓问题重重,数据质量问题已经严重影响了组织业务的正常运营。通过科学的数据质量管理,持续地提升数据质量,已...

2022-04-12 22:04:30 597 1

原创 数据治理(一)

1、基本概念1.1、什么是数据治理由于切入视角和侧重点不同,业界给出的数据治理定义已经不下几十种,到目前为止还未形成一个统一标准的定义。数据治理(Data Governance)指的是数据从零散没有规律变为统一规划的数据、从具有很少甚至于没有组织和流程的治理到企业范围内的综合数据治理、从处理数据时的混乱状态到数据井井有条的一个过程。数据治理是一种数据管理的概念,能够确保数据的全生命周期存在高数据质量的能力,其最终目标是提升数据的价值。1.2、为...

2022-04-12 21:59:41 704

原创 Flink从1.7到1.14版本升级汇总

一 、前言官方发布了Flink1.14版本,但是遗憾的是,中文官网中的案例和资料还都是基于很古老的版本。所以大家照着官网资料跑不通基本代码也是很正常的。所以整理一下从1.7 版本到1.14版本之间的相对大的变动. 做到在学习的过程中可以做到心里有数。二 .Flink 1.7 版本在 Flink 1.7.0,我们更关注实现快速数据处理以及以无缝方式为 Flink 社区构建数据密集型应用程序。我们最新版本包括一些令人兴奋的新功能和改进,例如对 Sc...

2022-04-06 22:44:40 1693

原创 FlinkSQL源码解析(三)执行流程

1、前言前面2部分主要是介绍以下2点:flink sql整体的执行流程大致为:sqlNode --> Operation --> RelNode --> 优化 --> execNode --> Transformation。 以及flink sql源码解析需要使用到的java spi。 现在具体来看看flink sql 在其内部转换的实现步骤,就是如何去调用连接器,主要是在sqlNode --> RelNode这一步。...

2022-03-13 23:08:06 3274

原创 FlinkSQL源码解析(二)Java SPI机制

在前面已经了解了FlinkSQL的转换流程,即如何从excuteSql(sql)如何转换为transformation,到任务的提交。整体流程大致为:sqlNode --> Operation --> RelNode --> 优化 --> execNode --> Transformation现在想更深入的了解,我们书写的sql语句是如何通过connecter属性连接kafka、hdfs等,为修改源码新增connector做铺...

2022-03-11 23:16:05 3080

原创 FlinkSQL源码解析(一)转换流程

1、前言1.1、JavaCCJavaCC(Java Compiler Compiler)是一个开源的语法分析器生成器和词法分析器生成器。JavaCC通过词法和语法描述文件来生成分析器。flink通过java CC生成分析器用于sql解析和校验。如下图:在flink-table下的flink-sql-parser项目中,org.apache.flink.sql.parser.impl下的类,就是使用javacc生成的。1.2、Calcite...

2022-03-10 12:44:27 5862 1

原创 Java异步调用总结

supplyAsync 创建带返回值的异步任务的 runAsync 创建无返回值的异步任务 thenApply 将job2提交到线程池中异步执行,实际执行job2的线程可能是另外一个线程 thenApplyAsync 由执行job1的线程立即执行job2,即两个job都是同一个线程执行的 thenAccept 接收上一个任务的返回值作为参数,但是无返回值; thenRun 没有入参,也没有返回值 exceptionally exceptio.

2022-03-08 22:20:37 465

原创 Iceberg(三)对接Flink

1、Flink基本操作1.1、配置参数和jar包Flink1.11开始就不在提供flink-shaded-hadoop-2-uber的支持,所以如果需要flink支持hadoop得配置环境变量HADOOP_CLASSPATH[root@hadoop1 flink-1.11.0]# vim bin/config.sh export HADOOP_COMMON_HOME=/opt/module/hadoop-3.1.3 export HADOOP_HDFS_HOME=/opt/...

2022-01-20 23:27:22 1992

原创 ClickHouse(八)监控与备份

1、ClickHouse监控概述ClickHouse运行时会将一些个自身的运行状态记录到众多系统表中(system.*)。所以我们对CH自身的一些运行指标的监控数据,也主要来自这些系统表。但是直接查询这些系统表会有一些不足之处:这种方式太过底层,不够直观,我们还需要在此之上实现可视化展示; 系统表只记录了CH自己的运行指标,有些时候我们需要外部系统的指标进行关联分析,例如Zookeeper、服务器CPU、IO等等。现在Prometheus + ...

2022-01-18 21:55:01 2393

原创 ClickHouse(七)MaterializeMySQL引擎

1、概述 MySQL的用户群体很大,为了能够增强护具的实时性,很多解决方案会利用binlog将数据写入到ClickHouse。为了能够监听binlog事件,我们需要用到类似canal这样的第三方中间件,这无疑增加了系统的复杂度。 ClickHouse20.8.2.3版本新增加了MaterializeMySQL的database引擎,该database能映射到MySQL中的某个database,并自动在ClickHouse中创建对应的ReplacingMergeTree。C...

2022-01-17 22:19:32 903

原创 java代码远程执行shell脚本

1、脚本信息如下:2、代码如下:public class SSHTool { private Connection conn; private String ipAddr; private Charset charset = StandardCharsets.UTF_8; private String userName; private String password; public SSHTool(String ipAddr, String

2022-01-11 23:12:09 3995

原创 Iceberg(二)对接Spark

1、配置参数和jar包1、将构建好的Iceberg的spark模块jar包,复制到spark jars下cp /opt/module/iceberg-apache-iceberg-0.11.1/spark3-extensions/build/libs/* /opt/module/spark-3.0.1-bin-hadoop2.7/jars/cp /opt/module/iceberg-apache-iceberg-0.11.1/spark3-runtime/build/libs/...

2022-01-10 22:00:23 2638 2

原创 Iceberg(一)介绍及环境搭建

1、介绍Apache Iceberg 是一种用于大型分析数据集的开放表格,Iceberge 向 Trino 和 Spark 添加了使用高性能格式的表,就像 Sql 表一样。Iceberg 为了避免出现不变要的一些意外,表结构和组织并不会实际删除,用户也不需要特意了解分区便可进行快速查询。Iceberg 的表支持快速添加、删除、更新或重命名操作。支持overwrite,但不支持行级的更新 将分区列进行隐藏,避免用户错误的使用分区和进行极慢的查询。 分区列也会随着表数据量或查询模式的变化而自动更

2022-01-10 20:43:59 5098

原创 Flink-sql平台化配置之flink-streaming-platform-web

记录使用flink-streaming-platform-web平台化提交Flink任务。主要是记录通过这个工具提交flink任务的原理。 相关参考: gitee地址:flink-streaming-platform-web: 基于flink-sql的实时流计算web平台github地址:https://github.com/zhp8341/flink-streaming-platform-web1、idea本地开发 ...

2022-01-08 12:42:29 3656

原创 StarRocks(五)集群管理

1、集群端口端口名称 默认端口 作用 http_port 8030(与resourcemanager端口冲突) FE在http server上的端口 rpc_port 9020 FE在thrift server上的端口 query_port 9030 FE在mysql server上的端口 edit_log_port 9020 FE Group(master follower observer)之间的通信端口 be_port

2022-01-04 22:30:53 1485

原创 StarRocks(四)StarRocks的使用

1、Colocate joinshuffle join 和 broadcast join 中,参与 join 的两张表的数据行,若满足 join 条件,则需要将它们汇合在一个节点上,完成 join。这两种 join 方式,都无法避免节点间数据网络传输带来额外的延迟和其他开销。而 colocation join 则可避免数据网络传输开销,核心思想是将同一个 Colocation Group 中表,采用一致的分桶键、一致的副本数量和一致副本放置方式,因此如果 join 列为分桶键,则计算节...

2022-01-04 22:24:39 5041

原创 ClickHouse调优(二)语法优化

1、ClicHouse语法优化规则ClickHouse的SQL优化规则是基于RBO(Rule Based Optimization),下面是一些优化规则。1.1、COUNT优化在调用count函数时,如果使用的是count()或者count(*),且没有where条件,则会直接使用system.tables的total_rows,例如:注意:Optimized trivial count,这是对count的优化。1.2、消除子查询重复字段语...

2022-01-03 23:40:15 3559

原创 ClickHouse调优(一)基本调优

1、执行计划调优在clickhuse20.6版本之前要查看SQL语句的执行计划需要设置日志级别为trace才能可以看到并且只能真正执行sql,在执行日志里面查看。在20.6版本引入了原生的执行计划的语法。在20.6.3版本成为正式版本的功能。1.1、基本语法EXPLAIN [AST | SYNTAX | PLAN | PIPELINE] [setting = value, ...] select ...[FORMAT ...]PLAN:用于查看执行计划,默认值。h...

2022-01-03 18:16:24 4719 1

原创 StarRocks(三)数据导入与查询

1、Stream LoadStarRocks支持从本地直接导入数据,支持CSV格式。数据量在10G以下,可以使用Stream Load导入,这种导入方式是通过用户发送HTTP请求将本地文件或数据流导入到StarRocks中。Stream Load同步执行导入并返回结果。用户可以直接通过返回结果判断是否导入成功。基本原理:Steam Load中,用户通过HTTP协议提交导入命令,提交到FE节点,FE节点则会通过HTTP 重定向指令请求转发给某一个BE节点,用户也可以直接...

2021-12-27 22:48:48 6059 1

原创 ClickHouse(六)知识点补漏

1、二级索引 目前在ClikHouse的官网上二级索引的功能在v20.1.2.4之前是被标注为实验性,在这个版本之后默认是开启的。 1、老版本使用二级索引前需要增加设置 是否允许使用实验性的二级索引(v20.1.2.4开始,这个参数已被删除,默认开启)set allow_experimental_data_skipping_indices=1; 2、创建测试表-- 建表,增加二级索引 a create table t_or...

2021-12-27 22:02:22 724

原创 StarRocks(二)表设计

1、表设计1.1、列式存储StarRocks的表和关系型数据相同, 由行和列构成. 每行数据对应用户一条记录, 每列数据有相同数据类型. 所有数据行的列数相同, 可以动态增删列. StarRocks中, 一张表的列可以分为维度列(也成为key列)和指标列(value列), 维度列用于分组和排序, 指标列可通过聚合函数SUM, COUNT, MIN, MAX, REPLACE, HLL_UNION, BITMAP_UNION等累加起来. 因此, StarRocks的表也可以认为是...

2021-12-25 21:18:20 2475

原创 StarRocks(一)简介与手动部署

前言关于 Apache Doris 和 DorisDB、StarRocks 的关系 Apache Doris和DorisDB是两个不同公司的产品。DorisDB开源后改名为StarRocks。现在的StarRocks有分为免费版有企业版。 StarRocks官网:StarRocks - 新一代极速全场景MPP数据库1、StarRocks简介1.1、StarRocks介绍StarRocks是新一代极速全场景MPP数据库...

2021-12-23 21:42:58 6462

原创 Hudi(二)Spark操作Hudi

1、Spark操作Hudi1.1、Spark-shell启动// spark-shell for spark 3spark-shell \ --packages org.apache.hudi:hudi-spark3-bundle_2.12:0.10.0,org.apache.spark:spark-avro_2.12:3.1.2 \ --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' // sp

2021-12-20 23:33:05 2138 1

原创 Hudi(一)基本介绍

Apache Hudi(Hadoop Upserts Delete and Incremental)是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服务、数据集群/压缩优化和并发,同时保持数据的开源文件格式。Apache Hudi不仅非常适合于流工作负载,而且还允许创建高效的增量批处理管道。Apache Hudi可以轻松地在任何云存储平台上使用。

2021-12-20 20:38:22 3512

原创 Flink的Checkpoint与Kafka的偏移量

1、Kafka的offsetKafka0.8版本以前,offset默认存储在zookeeper中(基于Zookeeper) Kafka0.9版本以后,offset默认存储在内部的topic中,基于__consumer_offsets 的Topic中。二:kafka消费offset提交配置:1. checkpoint禁用:flink kafka消费依赖于内部kafka客户端自动定期的offset提交配置:enable.auto.commit / auto.commit.interva.

2021-08-12 22:10:01 3624

原创 Flink源码解析(四)Flink应用程序的提交

这里包含Graph的处理,最终生成物理执行图,以及Slot到发布Task到TaskExecutor上运行。如下所示:Flink编程套路总结 Flink提交执行脚本分析 Flink CliFronted提交应用程序源码剖析 ExecutionEnvironment源码解析 Job提交流程源码分析 StreamGraph构建和提交源码解析 JobGragh构建和提交源码解析 ExecutionGragh构建和提交源码解析 Slot管理(申请)源码解析 Task提交到Task...

2021-08-11 23:08:08 1298 1

原创 Spark数据倾斜解决方案

1、执行流程1.1、MapReduce执行流程核心思想:大问题拆分成多个小问题,然后分布式的并行执行两个阶段:1、mapper阶段: 提取数据,赋予特征 映射 value ====> key, valuemapreducce框架是怎么把相同特征的数据组合到一起来,然后交给reduceTask执行一次聚合操作的呢2、reducer阶段: 把相同特征的数据进行聚合操作 key, (value, value, ...)1.2、Spark应用程序执...

2021-08-11 22:44:14 634

原创 Spark源码解析(八)Spark Shuffle发展历程

1. ShuffleManager发展概述在Spark的源码中,负责shuffle过程的执行、计算和处理的组件主要就是ShuffleManager,也即shuffle管理器。而随着Spark的版本的发展,ShuffleManager也在不断迭代,变得越来越先进。在Spark1.2以前,默认的shuffle计算引擎是HashShuffleManager。该ShuffleManager而HashShuffleManager有着一个非常严重的弊端,就是会产生大量的中间磁盘文...

2021-08-05 22:15:21 366

原创 Spark源码解析(七)Action算子解析

这里以org.apache.spark.examples.SparkPi为例。当执行reduce(_+_)方法时,其底层调用了sc.runJob方法。核心代码如下:/** * 注释:(rdd, func, partitions, callSite, resultHandler, properties) * 1、应用程序调用 action 算子 * 2、sparkContext.runJob() * 3、dagScheduler.runJob() * ...

2021-08-04 20:55:08 468

原创 Flink源码解析(三)TaskManager启动分析

1、Flink主节点TaskManager启动分析:TaskManager是Flink的worker节点,它负责Flink中本机slot资源的管理以及具体task的执行。TaskManager上的基本资源单位是slot,一个作业的task最终会部署在一个TM的slot上运行,TM会负责维护本地的slot资源列表,并来与FlinkMaster和JobManager通信。根据前面的启动分析:TaskManager的启动主类:TaskManagerRunne...

2021-07-30 23:43:14 1333 1

原创 Spark源码解析(六)Spark RPC样例

1.RpcServer类:object RpcServerTest { def main(args: Array[String]): Unit = { val conf = new SparkConf() val sparkSession = SparkSession .builder() .config(conf) .master("local[*]") .appName("test rpc").getOrCreate()

2021-07-25 19:09:17 200 1

原创 Akka(二):使用Akka模拟yarn

1.样例 使用akka来模拟yarn集群的通信。流程图如下:完整代码如下:MyResourceManager.scalaimport akka.actor.{Actor, ActorSystem, Props}import com.typesafe.config.ConfigFactoryimport scala.collection.mutableimport scala.concurrent.duration._class MyResourceMa...

2021-07-24 23:56:53 294

原创 Akka(一):Akka的基本使用

1.akka是什么?akka是一种基于Scala的网络编程库,实现了RPC框架。spark在1.6之前使用的是akka进行通信,1.6及以后是基于netty。现阶段的Flink是基于Akka+Netty。如果需要了解Spark或者Flink的网络通信,就必须得从akka开始。2.Akka中的方法主类是在akka.actor.Actor,Endpoint 有三个重要的声明周期方法:prestart():对象实例初始化之后自动执行 receive(): 核心业务...

2021-07-24 23:51:53 8011

原创 Flink源码解析(二)JobManager启动分析

1.Flink主节点JobManager启动分析:1、JobManager是Flink集群的主节点,它包含三大重要的组件:ResourceManager Flink的集群资源管理器,只有一个,关于slot的管理和申请等工作,都由他负责 Dispatcher 负责接收用户提交的JobGraph,然后启动一个JobManager,类似于YARN集群中的AppMster角色,类似于Spark Job中的Driver角色 JobManager 负责一个具体的Job的执行,在一个集群中,可以

2021-07-21 23:30:27 1219 2

PMP考试必备_PMBOK

PMP认证考试教材PMBOK即将改版,从第五版蜕变到第六版,新版将于2018年第一季度PMP考试正式更新实施。新版变化如下: 三大变化 1、全面关联PMI的三大系列标准,收录、体现其主要观点 基本标准 应用标准 实践指南 2、增加一章(第3章)描述项目经理的角色,强调其整合的作用 两个角度: 1)使项目目标与组织的战略目标一致 2)使团队中的每个人朝同一方向努

2019-03-04

Oracle查询优化改写+技巧与案例

Oracle查询优化改写+技巧与案例。

2018-11-12

大数据架构商业之路:从业务需求到技术方案.pdf

大数据架构商业之路:从业务需求到技术方案。包括个性化搜索以及推荐。主要是从业务方面入手,更适合有一定工作经验的。

2018-11-06

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除