![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据
学亮编程手记
学亮编程手记
展开
-
DataX Web介绍及安装(DataX可视化界面)
同一个执行器集群内AppName(executor.appname)需要保持一致;调度中心根据该配置动态发现不同集群的在线执行器列表。可以通过命令查看配置模板: python datax.py -r {YOUR_READER} -w {YOUR_WRITER}执行器回调地址(admin.addresses)需要保持一致;admin启动成功后日志会输出三个地址,两个接口文档地址,一个前端页面地址。启动成功后打开页面(默认管理员用户名:admin 密码:123456)修改邮件发送配置(不需要可以不修改)原创 2024-02-18 09:58:36 · 1472 阅读 · 0 评论 -
DataX使用示例:进行MySQL数据库间数据增量同步的示例配置
另外,在生产环境中,要确保源库和目标库的表结构完全一致或者能够映射兼容,同时考虑事务处理、冲突检测等问题。对于复杂的增量同步场景,可能还需要借助数据库自身的binlog复制功能或其他更加精细的同步工具来保证数据一致性。为了定期执行这个任务,你需要结合定时任务调度器(如Linux Crontab、Windows Task Scheduler等)在每天固定时间运行DataX命令,并且每次运行前更新。条件中的时间戳至前一天结束的时间点。原创 2024-02-17 21:40:26 · 385 阅读 · 0 评论 -
DataX使用示例:实现MySQL数据库之间的数据同步
为了定期进行数据同步,可以在系统中设置定时任务(如Linux的Cron Jobs、Windows的任务计划程序),根据需求周期性地执行上述DataX命令。确保已经下载并解压了DataX的发行版。DataX是一个命令行工具,无需复杂的安装过程,只需环境中有Java运行环境(JDK)和Python。请务必替换上述示例中的用户名、密码、主机地址、数据库名、表名及相应参数为实际的数据库连接信息,并根据实际情况调整其他配置项。参数来指定特定的时间范围或其他自增ID等条件,以获取自上次同步以来新增或更新的数据。原创 2024-02-17 21:35:42 · 651 阅读 · 0 评论 -
DataX离线数据同步工具:安装及同步MySQL表数据至hdfs示例
DataX是阿里巴巴开源的一款高性能、稳定可靠、可扩展性强的离线数据同步工具,可以支持多种异构数据源之间的高效数据迁移。以下是一个简化的DataX安装及基础使用示例,以导出MySQL数据库中的。原创 2024-02-17 21:29:31 · 576 阅读 · 0 评论 -
Apache Doris安装及基础使用示例
由于Doris的具体安装步骤会随版本更新而有所变化,请以最新官方文档为准。以下是一个简化的安装流程示例,通常包括下载、解压、配置和启动服务等步骤。请注意以上命令仅作为基本示例,实际使用时请根据实际业务需求进行调整,并且务必参考最新的Doris官方文档来获取最准确的安装和使用指南。原创 2024-02-17 14:15:50 · 293 阅读 · 0 评论 -
ubuntu安装ClickHouse及基础使用示例
以上步骤展示了如何在Ubuntu系统中安装ClickHouse,并进行了简单的数据库、表操作以及数据查询。在实际应用中,ClickHouse还提供了丰富的SQL功能和优化策略,可以根据需求进一步探索和学习。原创 2024-02-17 14:05:10 · 429 阅读 · 0 评论 -
ClickHouse和Apache Doris的区别
总结来说,ClickHouse 更倾向于极致查询性能和大数据量下的复杂分析,而 Doris 则在保证查询性能的同时,更加注重易用性、实时查询体验以及针对BI工具的良好集成。:ClickHouse 对于实时插入和查询具有较好的支持,但对事务支持有限,更适合批处理或近实时分析。:Doris 支持更灵活的表模型,如支持稀疏矩阵存储,允许用户定义的维度和指标列,便于进行多维分析。:Doris 强调即时数据分析能力,支持高并发的低延迟查询,特别适合即席查询和 BI 分析场景。原创 2024-02-17 14:01:49 · 786 阅读 · 0 评论 -
MySQL数据库高性能架构模式:读写分离架构;数据库分片架构;读写分离和数据分片架构;实现方式
互联网业务兴起之后,海量用户加上海量数据的特点,单个数据库服务器已经难以满足业务需要,必须考虑数据库集群的方式来提升性能。高性能数据库集群的。原创 2024-02-12 17:17:18 · 901 阅读 · 0 评论 -
Apache Doris 生态扩展及优化:Spark Doris Connector;Flink Doris Connector;DataX DorisWriter数据同步;JDBC Catalog
无论是DataStream API 还是SQL API 读取Doris中数据时,目前仅支持批读取。Flink向Doris中写入数据时底层会转换成Stream Load方式向Doris加载数据,这种速度快,每次执行代码都会生成一个Stream Load对应的Label ,在代码中或者SQL Connector中可以指定,建议加上UUID随机生成。否则每次执行代码前还需执行clean label from db 来清除对应Doris 库中的Label。原创 2024-02-12 17:04:11 · 1490 阅读 · 0 评论 -
Apache Doris 进阶使用:表结构变更;动态分区;数据缓存;Doris Join 类型;Runtime Filter;Join优化原理;BITMAP精准去重;物化视图
用户可以通过 Schema Change 操作来修改已存在表的 Schema。下面演示对Doris表rollup增加列以及修改列类型来演示Schema Change作业。,下面直接演示作业创建。原创 2024-02-12 17:01:04 · 1262 阅读 · 0 评论 -
Apache Doris 数据更新与删除:Update数据更新;Delete数据删除;Sequence 列;批量删除
如果我们需要修改或更新Doris中的数据,如何使用UPDATE命令来操作。数据更新对Doris的版本有限制,只能在Doris Version 0.15.x + 才可以使用。数据更新只能在数据模型的表中执行,使用场景为:对满足某些条件的行进行修改值或小范围数据更新,待更新的行最好是整个表非常小的一部分。原创 2024-02-12 16:53:47 · 4065 阅读 · 0 评论 -
Apache Doris 数据导出及数据管理:export导出;Select...Into Outfile导出;MySQL dump 导出;BACKUP数据备份;RESOTRE数据恢复;RECOVER
Doris Exeport、Select Into Outfile、MySQL dump三种方式数据导出。用户可以根据自己的需求导出数据。此外数据还可以以文件形式通过Borker备份到远端存储系统中,之后可以通过恢复命令来回复到Doris集群中。下面分别介绍Doris中数据导出和备份。原创 2024-02-12 16:50:53 · 1123 阅读 · 0 评论 -
Apache Doris 数据导入:Insert Into语句;Binlog Load;Broker Load;HDFS Load;Spark Load;例行导入(Routine Load)
Doris 中的所有导入操作都有原子性保证,即一个导入作业中的数据要么全部成功,要么全部失败,不会出现仅部分数据导入成功的情况。一个导入作业都会有一个 Label。这个 Label 是在一个数据库(Database)下唯一的,用于唯一标识一个导入作业。Label 可以由用户指定,部分导入功能也会由系统自动生成。Label 是用于保证对应的导入作业,仅能成功导入一次。一个被成功导入的 Label,再次使用时,会被拒绝并报错 Label already used。原创 2024-02-12 14:12:29 · 1793 阅读 · 0 评论 -
Apache Doris数据表设计:Doris简单使用;Doris基本概念;Doris数据模型;Doris列定义;Doris分区和分桶;Properties配置项;关于ENGINE;Doris索引
关于Doris表的类型,可以通过在 mysql-client 中执行 HELP CREATE TABLE;查看。AGGREGATE KEY 数据模型Key 列必须在所有 Value 列之前。尽量选择整型类型。因为整型类型的计算和查找效率远高于字符串。对于不同长度的整型类型的选择原则,遵循够用即可。对于 VARCHAR 和 STRING 类型的长度,遵循够用即可。表中一行数据所有列总的字节数不能超过100KB。如果数据一行非常大,建议拆分数据进行多表存储。原创 2024-02-12 14:07:52 · 1605 阅读 · 1 评论 -
Apache Doris Linux环境安装部署:FE BE Broker部署及扩缩容;Doris集群一键启停脚本
Doris 运行在 Linux 环境中,推荐 CentOS 7.x 或者 Ubuntu 16.04 以上版本,同时你需要安装 Java 运行环境,JDK最低版本要求是8。我们这里使用的是Linux Centos7.9版本,jdk为1.8。Broker 是用于访问外部数据源(如 hdfs)的进程,通常在每台机器上部署一个 broker 实例即可。原创 2024-02-12 13:51:37 · 1955 阅读 · 0 评论 -
Zookeeper完全教程:集群搭建、常用命令、Java API使用代码示例
Zookeeper的介绍和安装Zookeeper客户端使用ZookeeperJavaAPI使用 我们为了学习Dubbo,而在dubbo中需要一个注册中心,而Zookeeper是我们在使用Dubbo是官方推荐的注册中心,所以我们先来介绍ZookeeperZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。原创 2023-11-17 03:11:02 · 663 阅读 · 0 评论 -
Flink 1.17教程:聚合算子(Aggregation)之按键分区(keyBy)
但它跟之前的转换操作得到的SingleOutputStreamOperator不同,只是一个流的分区操作,并不是一个转换算子。KeyedStream可以认为是“分区流”或者“键控流”,它是对DataStream按照key的一个逻辑分区,所以泛型有两个类型:除去当前流中的元素类型外,还需要指定key的类型。在内部,是通过计算key的哈希值(hash code),对分区数进行取模运算来实现的。计算的结果不仅依赖当前数据,还跟之前的数据有关,相当于要把所有数据聚在一起进行汇总合并——这就是所谓的“聚合”(原创 2023-09-07 18:29:54 · 974 阅读 · 0 评论 -
Flink 1.17教程:输出算子之自定义Sink输出
如果我们想将数据存储到我们自己的存储设备中,而Flink并没有提供可以直接使用的连接器,就只能自定义Sink进行输出了。与Source类似,Flink为我们提供了通用的SinkFunction接口和对应的RichSinkDunction抽象类,只要实现它,通过简单地调用DataStream的.addSink()方法就可以自定义写入任何外部存储。在实现SinkFunction的时候,需要重写的一个关键方法invoke(),在这个方法中我们就可以实现将流里的数据发送出去的逻辑。原创 2023-09-07 18:06:12 · 382 阅读 · 0 评论 -
Flink 1.17教程:输出算子之输出到MySQL(JDBC)
(2)启动MySQL,在test库下建表ws。写入数据的MySQL的测试步骤如下。(3)编写输出到MySQL的示例代码。原创 2023-09-07 18:05:31 · 388 阅读 · 0 评论 -
Flink 1.17教程:输出算子之输出到Kafka
由于我们已经测试过从Kafka数据源读取数据,连接器相关依赖已经引入,这里就不重复介绍了。(4)运行代码,在Linux主机启动一个消费者,查看是否收到数据。(3)编写输出到Kafka的示例代码。(1)添加Kafka 连接器依赖。(2)启动Kafka集群。原创 2023-09-07 18:04:44 · 461 阅读 · 0 评论 -
Flink 1.17教程:输出算子之输出到文件
FileSink支持行编码(Row-encoded)和批量编码(Bulk-encoded)格式。Flink专门提供了一个流式文件系统的连接器:FileSink,为批处理和流处理提供了一个统一的Sink,它可以将分区文件写入Flink支持的文件系统。原创 2023-09-07 18:03:55 · 169 阅读 · 0 评论 -
Flink 1.17教程:输出算子(Sink)之连接到外部系统
Flink作为数据处理框架,最终还是要把计算处理的结果写入外部存储,为外部应用提供支持。原创 2023-09-07 18:03:14 · 261 阅读 · 0 评论 -
Flink 1.17教程:基本合流操作
由于需要“一国两制”,因此调用.map()方法时传入的不再是一个简单的MapFunction,而是一个CoMapFunction,表示分别对两条流中的数据执行map操作。需要实现的方法也非常直白:.map1()就是对第一条流中数据的map操作,.map2()则是针对第二条流。它需要实现的就是processElement1()、processElement2()两个方法,在每个数据到来时,会根据来源的流调用其中的一个方法进行处理。最简单的合流操作,就是直接将多条流合在一起,叫作流的“联合”(union)。原创 2023-09-07 18:02:24 · 325 阅读 · 0 评论 -
Flink 1.17教程:分流
这种实现非常简单,但代码显得有些冗余——我们的处理逻辑对拆分出的三条流其实是一样的,却重复写了三次。简单来说,只需要调用上下文ctx的.output()方法,就可以输出任意类型的数据了。而侧输出流的标记和提取,都离不开一个“输出标签”(OutputTag),指定了侧输出流的id和类型。也就是基于一DataStream,定义一些筛选条件,将符合条件的数据拣选出来放到对应的流里。其实根据条件筛选数据的需求,本身非常容易实现:只要针对同一条流多次独立调用.filter()方法进行筛选,就可以得到拆分之后的流了。原创 2023-09-07 18:01:34 · 178 阅读 · 0 评论 -
Flink 1.17教程:自定义分区(Custom)
当Flink提供的所有分区策略都不能满足用户的需求时,我们可以通过使用partitionCustom()方法来自定义分区策略。1)自定义分区器@Override2)使用自定义分区。原创 2023-09-07 18:00:40 · 432 阅读 · 0 评论 -
Flink 1.17教程:广播(broadcast)和全局分区(global)
全局分区也是一种特殊的分区方式。这种做法非常极端,通过调用.global()方法,会将所有的输入流数据都发送到下游算子的第一个并行子任务中去。这就相当于强行让下游任务并行度变成了1,所以使用这个操作需要非常谨慎,可能对程序造成很大的压力。这种方式其实不应该叫做“重分区”,因为经过广播之后,数据会在不同的分区都保留一份,可能进行重复处理。可以通过调用DataStream的broadcast()方法,将输入数据复制并发送到下游算子的所有并行任务中去。原创 2023-09-07 17:59:59 · 144 阅读 · 0 评论 -
Flink 1.17教程:轮询分区(Round-Robin)和重缩放分区(rescale)
轮询,简单来说就是“发牌”,按照先后顺序将数据做依次分发。通过调用DataStream的.rebalance()方法,就可以实现轮询重分区。rebalance使用的是Round-Robin负载均衡算法,可以将输入流数据平均分配到下游的并行任务中去。重缩放分区和轮询分区非常相似。当调用rescale()方法时,其实底层也是使用Round-Robin算法进行轮询,但是只会将数据轮询发送到下游并行任务的一部分中。rescale的做法是分成小团体,发牌人只给自己团体内的所有人轮流发牌。原创 2023-09-07 17:59:12 · 233 阅读 · 0 评论 -
Flink 1.17教程:物理分区算子(Physical Partitioning)之随机分区(shuffle)
随机分区服从均匀分布(uniform distribution),所以可以把流中的数据随机打乱,均匀地传递到下游任务分区。因为是完全随机的,所以对于同样的输入数据, 每次执行得到的结果也不会相同。常见的物理分区策略有:随机分配(Random)、轮询分配(Round-Robin)、重缩放(Rescale)和广播(Broadcast)。通过调用DataStream的.shuffle()方法,将数据随机地分配到下游算子的并行任务中去。经过随机分区之后,得到的依然是一个DataStream。原创 2023-09-07 17:57:52 · 72 阅读 · 0 评论 -
Flink 1.17教程:转换算子(Transformation)之用户自定义函数(UDF)
用户自定义函数(user-defined function,UDF),即用户可以根据自身需求,重新实现算子的逻辑。用户自定义函数分为:函数类、匿名函数、富函数类。原创 2023-09-07 17:56:54 · 120 阅读 · 0 评论 -
Flink 1.17教程:转换算子(Transformation)之归约聚合算子(reduce)
ReduceFunction接口里需要实现reduce()方法,这个方法接收两个输入事件,经过转换处理之后输出一个相同类型的事件。在流处理的底层实现过程中,实际上是将中间“合并的结果”作为任务的一个状态保存起来的;之后每来一个新的数据,就和之前的聚合状态进一步做归约。调用KeyedStream的reduce方法时,需要传入一个参数,实现ReduceFunction接口。reduce可以对已有的数据进行归约处理,把每一个新输入的数据和当前已经归约出来的值,再做一个聚合计算。原创 2023-09-07 17:55:52 · 161 阅读 · 0 评论 -
Flink 1.17教程:时间和窗口
在Flink中,用来衡量事件时间进展的标记,就被称作“水位线”(Watermark)。具体实现上,水位线可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点,主要内容就是一个时间戳,用来指示当前的事件时间。而它插入流中的位置,就应该是在某个数据到来之后;这样就可以从这个数据中提取时间戳,作为当前水位线的时间戳了。1)周期性水位线生成器(Periodic Generator)周期性生成器一般是通过onEvent()观察判断输入的事件,而在onPeriodicEmit()里发出水位线。原创 2023-09-04 11:28:08 · 503 阅读 · 0 评论 -
Flink 1.17教程:转换算子(Transformation)
用户自定义函数(user-defined function,UDF),即用户可以根据自身需求,重新实现算子的逻辑。用户自定义函数分为:函数类、匿名函数、富函数类。当Flink提供的所有分区策略都不能满足用户的需求时,我们可以通过使用partitionCustom()方法来自定义分区策略。1)自定义分区器@Override2)使用自定义分区。原创 2023-09-03 14:22:44 · 230 阅读 · 0 评论 -
kettle教程:kettle与flink结合使用示例
在上述示例中,每个步骤都有特定的类型(type)和描述(description),并具有与该步骤相关的特定属性。例如,Stream lookup步骤指定了输入数据流的名称(stream_name),以及要进行查找的字段(lookup_field)和查找表(lookup_table)等。原创 2023-09-03 11:33:54 · 715 阅读 · 1 评论 -
kettle教程:spoon kettle数据转换示例
Spoon是Pentaho Data Integration(PDI)的图形用户界面(GUI)工具,用于设计、开发和管理ETL(抽取、转换和加载)流程。它是Pentaho套件的一部分,旨在帮助用户轻松地创建和管理数据集成作业。以下是Spoon的一些主要特点和功能:图形化界面:Spoon提供了一个直观的图形用户界面,使用户可以通过拖放和连接各种组件来设计ETL流程。这种可视化方式简化了作业的设计过程,使用户更容易理解和管理数据流。原创 2023-09-03 11:25:42 · 2253 阅读 · 0 评论 -
Flink 1.17教程:源算子(Source)概念、从集合中读取数据、从文件读取数据、从Socket读取数据、从Kafka读取数据、从数据生成器读取数据、支持的数据类型
Flink可以从各种来源获取数据,然后构建DataStream进行转换处理。一般将数据的输入来源称为数据源(data source),而读取数据的算子就是源算子(source operator)。所以,source就是我们整个处理程序的输入端。方法传入的参数是一个“源函数”(source function),需要实现SourceFunction接口。Flink直接提供了很多预实现的接口,此外还有很多外部连接工具也帮我们实现了对应的Source,通常情况下足以应对我们的实际需求。原创 2023-09-02 23:47:02 · 1092 阅读 · 0 评论 -
Flink 1.17教程: DataStream API执行环境、执行模式及触发程序执行
DataStream API是Flink的核心层API。一个Flink程序,其实就是对DataStream的各种转换。原创 2023-09-02 23:25:51 · 232 阅读 · 0 评论 -
Flink 1.17教程:运行时架构详解
并行度是指在计算过程中同时执行多个任务或操作的能力。在 Apache Flink 中,并行度是指同时执行作业中的多个任务或算子的能力。总的来说,通过并行度,可以将任务分解成更小的单元并同时执行它们,提高计算速度、处理大规模数据和提高系统的容错性。这是为了更好地利用计算资源、提高系统性能和处理大规模数据而引入的概念。一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。原创 2023-09-01 16:26:39 · 209 阅读 · 0 评论 -
Flink 1.17教程:Standalone会话模式和Yarn应用模式的作业提交流程
逻辑流图(StreamGraph)→ 作业图(JobGraph)→ 执行图(ExecutionGraph)→ 物理图(Physical Graph)。原创 2023-09-01 16:24:42 · 110 阅读 · 0 评论 -
Flink 1.17教程:任务槽Task Slots和并行度的关系
在 Apache Flink 中,任务槽(Task Slots)是指可用于执行并行任务的资源单元。每个任务槽可以看作是一个可用的执行线程或处理单元,用于并行执行作业的不同部分。通俗来说,可以将任务槽想象成一个工作台,而每个工作台上都可以同时进行一项任务。任务槽的数量决定了同时可以执行的任务数量。总的来说,任务槽在 Apache Flink 中扮演着并行执行任务的角色,可以提高作业的并行度和整体处理能力。它们用于任务分配、负载均衡以及容错和高可用性的实现。原创 2023-09-01 16:22:49 · 551 阅读 · 0 评论 -
Flink 1.17教程:算子链Operator Chain
在 Apache Flink 中,算子链(Operator Chaining)是将多个操作符(算子)连接在一起形成一个链式结构的优化技术。算子链的作用是将多个操作符合并为一个单一的任务单元,以减少通信开销、提高执行效率和减少资源占用。通俗来说,算子链的作用可以比喻为将多个操作合并成一个整体,就像是把多个小任务捆绑在一起,让它们作为一个整体来执行,而不是分散地执行。总的来说,算子链可以在 Apache Flink 中提供优化的执行方式,减少通信开销、提高执行效率和减少资源占用。原创 2023-09-01 16:21:17 · 842 阅读 · 0 评论