实践数据湖iceberg 第二十课 flink + iceberg CDC场景(版本问题,测试失败)

揭秘Iceberg:数据湖新版本的高级特性全面解析 Iceberg是一个高性能的分布式数据存储格式,支持分支、标签、Puffin格式和统计信息等特性,以优化数据管理和查询性能。它通过物化视图、CDC数据入湖、多流数据拼接、异步索引和Z-order聚簇优化等功能,简化了数据集成和处理流程,同时提供了多租户访问控制以增强数据安全性。 阅读详情

系列文章目录

实践数据湖iceberg 第一课 入门
实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式
实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg
实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到iceberg(升级版本到flink1.12.7)
实践数据湖iceberg 第五课 hive catalog特点
实践数据湖iceberg 第六课 从kafka写入到iceberg失败问题 解决
实践数据湖iceberg 第七课 实时写入到iceberg
实践数据湖iceberg 第八课 hive与iceberg集成
实践数据湖iceberg 第九课 合并小文件
实践数据湖iceberg 第十课 快照删除
实践数据湖iceberg 第十一课 测试分区表完整流程(造数、建表、合并、删快照)
实践数据湖iceberg 第十二课 catalog是什么
实践数据湖iceberg 第十三课 metadata比数据文件大很多倍的问题
实践数据湖iceberg 第十四课 元数据合并(解决元数据随时间增加而元数据膨胀的问题)
实践数据湖iceberg 第十五课 spark安装与集成iceberg(jersey包冲突)
实践数据湖iceberg 第十六课 通过spark3打开iceberg的认知之门
实践数据湖iceberg 第十七课 hadoop2.7,spark3 on yarn运行iceberg配置
实践数据湖iceberg 第十八课 多种客户端与iceberg交互启动命令(常用命令)
实践数据湖iceberg 第十九课 flink count iceberg,无结果问题
实践数据湖iceberg 第二十课 flink + iceberg CDC场景(版本问题,测试失败)
实践数据湖iceberg 第二十一课 flink1.13.5 + iceberg0.131 CDC(测试成功)



概要

测试flink cdc, 以及数据变化时update数据是如何落地

flink1.14.3
iceberg0.13.0
cdc: 2.2

设计测试场景:


1. mysql数据准备

1.1 准备数据(初始化)

create database xxzh_stock character set utf8;

CREATE TABLE `stock_basic` (
  `i` bigint(20) DEFAULT NULL,
  `ts_code` varchar(10),
  `symbol` varchar(10),
  `name` varchar(10),
  `area` varchar(20),
  `industry` varchar(20),
  `list_date` varchar(10),
  `actural_controller` varchar(100) DEFAULT NULL,
  KEY `ix_stock_basic_index` (`i`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



-- ----------------------------
-- Records of stock_basic
-- ----------------------------
INSERT INTO `stock_basic` VALUES ('0', '000001.SZ', '000001', '平安银行', '深圳', '银行', '19910403', null);
INSERT INTO `stock_basic` VALUES ('1', '000002.SZ', '000002', '万科A', '深圳', '全国地产', '19910129', null);
INSERT INTO `stock_basic` VALUES ('2', '000004.SZ', '000004', '国华网安', '深圳', '软件服务', '19910114', '李映彤');

1.2 开启mysql binlog

修改mysql配置,/etc/my.cnf,开启binlog, 并记录binlog-do-db=xxzh_stock 这个库的变化
文件末尾,增加如下配置

server-id=1
log-bin=mysql-bin
binlog_format=row
binlog-do-db=xxzh_stock

重启mysql,让配置生效

[root@hadoop103 conf]# service mysqld restart

2 flink表定义

2.1 启动flink-sql命令

带上icerbg,kafka,hive,cdc的包

[root@hadoop101 ~]# sql-client.sh embedded -j /opt/software/iceberg0.13/iceberg-flink-runtime-1.14-0.13.0.jar -j /opt/software/iceberg0.13/flink-sql-connector-hive-2.3.6_2.12-1.14.3.jar -j /opt/software/flink-sql-connector-kafka_2.12-1.14.3.jar -j /opt/software/flink-connector-mysql-cdc-1.4.0.jar shell

cdc的下载地址: https://repo.maven.apache.org/maven2/com/alibaba/ververica/flink-connector-mysql-cdc/1.4.0/flink-connector-mysql-cdc-1.4.0.jar

2.2 准备mysql的表source表

CREATE TABLE stock_basic_source(
  `i`  INT NOT NULL,
  `ts_code`   INT NOT NULL,
  `symbol`   CHAR(10) NOT NULL,
  `name` char(10) NOT NULL,
  `area`   CHAR(20) NOT NULL,
  `industry`   CHAR(20) NOT NULL,
  `list_date`   CHAR(10) NOT NULL,
  `actural_controller`   CHAR(100) NOT NULL,
  PRIMARY KEY(i) NOT ENFORCED
) WITH (
  'connector' = 'mysql-cdc',
  'hostname' = 'hadoop103',
  'port' = '3306',
  'username' = 'root',
  'password' = '123456',
  'database-name' = 'xxzh_stock',
  'table-name' = 'stock_basic'
);

PRIMARY KEY(i) NOT ENFORCED需要加上主键,否则会报

Flink SQL> select * from stock_basic_source;
[ERROR] Could not execute SQL statement. Reason:
org.apache.flink.table.api.ValidationException: The primary key is necessary when enable 'Key: 'scan.incremental.snapshot.enabled' , default: true (fallback keys: [])' to 'true'

2.3 准备iceberg的sink表

CREATE CATALOG hive_catalog6 WITH (
  'type'='iceberg',
  'catalog-type'='hive',
  'uri'='thrift://hadoop101:9083',
  'clients'='5',
  'property-version'='1',
  'warehouse'='hdfs://user/hive/warehouse/hive_catalog6'
);
use catalog hive_catalog6;

CREATE DATABASE xxzh_stock_mysql_db;
USE xxzh_stock_mysql_db;

CREATE TABLE stock_basic_iceberg_sink(
  `i`  INT NOT NULL,
  `ts_code`   INT NOT NULL,
  `symbol`   CHAR(10) NOT NULL,
  `name` char(10) NOT NULL,
  `area`   CHAR(20) NOT NULL,
  `industry`   CHAR(20) NOT NULL,
  `list_date`   CHAR(10) NOT NULL,
  `actural_controller`   CHAR(100) NOT NULL,
   PRIMARY KEY(i) NOT ENFORCED
);


3.通过flink从mysq写入iceberg

3.1 数据由mysql写入到iceberg

Flink SQL> insert into hive_catalog6.xxzh_stock_mysql_db.stock_basic_iceberg_sink select * from stock_basic_source;
[INFO] Submitting SQL update statement to the cluster...
[INFO] SQL update statement has been successfully submitted to the cluster:
Job ID: c83f55f408926ad987375f4fa3bf7df4

4. catalog路径说明

catalog切换回default_catalog才能查soure表,或者带default_catalog的绝对路径

4.1 切换catalog方式

Flink SQL> select * from stock_basic_source;
[ERROR] Could not execute SQL statement. Reason:
org.apache.calcite.sql.validate.SqlValidatorException: Object 'stock_basic_source' not found

Flink SQL> show current catalog;
+----------------------+
| current catalog name |
+----------------------+
|        hive_catalog6 |
+----------------------+
1 row in set

Flink SQL> show catalogs;
+-----------------+
|    catalog name |
+-----------------+
| default_catalog |
|   hive_catalog6 |
+-----------------+
2 rows in set

Flink SQL> use catalog default_catalog;
[INFO] Execute statement succeed.

Flink SQL> select * from stock_basic_source;

4.2 绝对路径方式

参考3.2

5 报错处理

5.1 cdc包的问题

查询

解决方法:准备这个包 flink-connector-mysql-cdc-1.4.0.jar

Flink SQL> select * from stock_basic_source;
[ERROR] Could not execute SQL statement. Reason:
org.apache.flink.table.api.ValidationException: Could not find any factory for identifier 'mysql-cdc' that implements 'org.apache.flink.table.factories.DynamicTableFactory' in the classpath.

Available factory identifiers are:

blackhole
datagen
filesystem
iceberg
kafka
print
upsert-kafka

5.2 java.lang.NoClassDefFoundError: org/apache/flink/shaded/guava18/com/google/common/util/concurrent/ThreadFactoryBuilder

2022-02-17 16:24:47,934 INFO  org.apache.flink.runtime.state.StateBackendLoader            [] - State backend loader loads the state backend as HashMapStateBackend
2022-02-17 16:24:47,934 INFO  org.apache.flink.streaming.runtime.tasks.StreamTask          [] - Using job/cluster config to configure application-defined checkpoint storage: org.apache.flink.runtime.state.storage.FileSystemCheckpointStorage@2772b695
2022-02-17 16:24:47,936 INFO  org.apache.flink.streaming.runtime.tasks.StreamTask          [] - Using job/cluster config to configure application-defined state backend: org.apache.flink.runtime.state.hashmap.HashMapStateBackend@16ba5737
2022-02-17 16:24:47,936 INFO  org.apache.flink.streaming.runtime.tasks.StreamTask          [] - Using application-defined state backend: org.apache.flink.runtime.state.hashmap.HashMapStateBackend@4ae44fbc
2022-02-17 16:24:47,936 INFO  org.apache.flink.runtime.state.StateBackendLoader            [] - State backend loader loads the state backend as HashMapStateBackend
2022-02-17 16:24:47,936 INFO  org.apache.flink.streaming.runtime.tasks.StreamTask          [] - Using job/cluster config to configure application-defined checkpoint storage: org.apache.flink.runtime.state.storage.FileSystemCheckpointStorage@276604d1
2022-02-17 16:24:47,936 INFO  org.apache.flink.runtime.taskmanager.Task                    [] - SinkMaterializer -> IcebergStreamWriter (1/1)#3 (f31a1159e5464010d0ea8c9325e3db32) switched from DEPLOYING to INITIALIZING.
2022-02-17 16:24:47,941 INFO  org.apache.flink.runtime.taskmanager.Task                    [] - Source: TableSourceScan(table=[[default_catalog, default_database, stock_basic_source]], fields=[i, ts_code, symbol, name, area, industry, list_date, actural_controller]) -> NotNullEnforcer(fields=[i, ts_code, symbol, name, area, industry, list_date, actural_controller]) (1/1)#3 (3b4e39607a907745d88639c7300b088a) switched from DEPLOYING to INITIALIZING.
2022-02-17 16:24:47,942 WARN  org.apache.flink.metrics.MetricGroup                         [] - The operator name NotNullEnforcer(fields=[i, ts_code, symbol, name, area, industry, list_date, actural_controller]) exceeded the 80 characters length limit and was truncated.
2022-02-17 16:24:47,943 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutor           [] - Received task IcebergFilesCommitter -> Sink: IcebergSink hive_catalog6.xxzh_stock_mysql_db.stock_basic_iceberg_sink (1/1)#3 (9dc85e56ba89021f64f46a5c55b86e9c), deploy into slot with allocation id 6fa395ed1d6e1678faaa162efd8ca0ff.
2022-02-17 16:24:47,946 WARN  org.apache.flink.metrics.MetricGroup                         [] - The operator name Source: TableSourceScan(table=[[default_catalog, default_database, stock_basic_source]], fields=[i, ts_code, symbol, name, area, industry, list_date, actural_controller]) exceeded the 80 characters length limit and was truncated.
2022-02-17 16:24:47,946 INFO  com.alibaba.ververica.cdc.debezium.DebeziumSourceFunction    [] - Consumer subtask 0 has no restore state.
2022-02-17 16:24:47,947 INFO  org.apache.flink.runtime.taskmanager.Task                    [] - IcebergFilesCommitter -> Sink: IcebergSink hive_catalog6.xxzh_stock_mysql_db.stock_basic_iceberg_sink (1/1)#3 (9dc85e56ba89021f64f46a5c55b86e9c) switched from CREATED to DEPLOYING.
2022-02-17 16:24:47,947 INFO  org.apache.flink.runtime.taskmanager.Task                    [] - Loading JAR files for task IcebergFilesCommitter -> Sink: IcebergSink hive_catalog6.xxzh_stock_mysql_db.stock_basic_iceberg_sink (1/1)#3 (9dc85e56ba89021f64f46a5c55b86e9c) [DEPLOYING].
2022-02-17 16:24:47,947 INFO  org.apache.flink.streaming.runtime.tasks.StreamTask          [] - Using job/cluster config to configure application-defined state backend: org.apache.flink.runtime.state.hashmap.HashMapStateBackend@5d60868d
2022-02-17 16:24:47,947 INFO  org.apache.flink.streaming.runtime.tasks.StreamTask          [] - Using application-defined state backend: org.apache.flink.runtime.state.hashmap.HashMapStateBackend@595f09f9
2022-02-17 16:24:47,948 INFO  org.apache.flink.runtime.state.StateBackendLoader            [] - State backend loader loads the state backend as HashMapStateBackend
2022-02-17 16:24:47,948 INFO  org.apache.flink.streaming.runtime.tasks.StreamTask          [] - Using job/cluster config to configure application-defined checkpoint storage: org.apache.flink.runtime.state.storage.FileSystemCheckpointStorage@7406169e
2022-02-17 16:24:47,948 INFO  org.apache.flink.runtime.taskmanager.Task                    [] - IcebergFilesCommitter -> Sink: IcebergSink hive_catalog6.xxzh_stock_mysql_db.stock_basic_iceberg_sink (1/1)#3 (9dc85e56ba89021f64f46a5c55b86e9c) switched from DEPLOYING to INITIALIZING.
2022-02-17 16:24:47,955 WARN  org.apache.flink.runtime.taskmanager.Task                    [] - Source: TableSourceScan(table=[[default_catalog, default_database, stock_basic_source]], fields=[i, ts_code, symbol, name, area, industry, list_date, actural_controller]) -> NotNullEnforcer(fields=[i, ts_code, symbol, name, area, industry, list_date, actural_controller]) (1/1)#3 (3b4e39607a907745d88639c7300b088a) switched from INITIALIZING to FAILED with failure cause: java.lang.NoClassDefFoundError: org/apache/flink/shaded/guava18/com/google/common/util/concurrent/ThreadFactoryBuilder
	at com.alibaba.ververica.cdc.debezium.DebeziumSourceFunction.open(DebeziumSourceFunction.java:166)
	at org.apache.flink.api.common.functions.util.FunctionUtils.openFunction(FunctionUtils.java:34)
	at org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator.open(AbstractUdfStreamOperator.java:100)
	at org.apache.flink.streaming.runtime.tasks.RegularOperatorChain.initializeStateAndOpenOperators(RegularOperatorChain.java:110)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.restoreGates(StreamTask.java:711)
	at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$SynchronizedStreamTaskActionExecutor.call(StreamTaskActionExecutor.java:100)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.restoreInternal(StreamTask.java:687)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.restore(StreamTask.java:654)
	at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:958)
	at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:927)
	at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:766)
	at org.apache.flink.runtime.taskmanager.Task.run(Task.java:575)
	at java.lang.Thread.run(Thread.java:748)

问题分析:
cdc目前支持到flink1.13.3,具体看github pom, https://github.com/ververica/flink-cdc-connectors/blob/master/pom.xml

解决方法:
降级或者编译一个cdc,参考 http://betheme.net/news/txtlist_i66236v.html

碰到这种问题,很难讲心情好。。。

下载源码 : https://github.com/ververica/flink-cdc-connectors

尝试编译:发现1.14.3的blink包是没有的,好吧,还是放弃好了。blink-planner没有,未来吃太多坑,找社区的人问(github上有个cdc的社区服务钉钉群),也不建议使用flink1.14。

降级!
最新版flink1.13的子版本是flink1.13.5,cdc的flink1.13.3, 重新编译一个cdc
cdc的pom.xml中修改flink和scala版本。/

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for flink-cdc-connectors 2.2-SNAPSHOT:
[INFO] 
[INFO] flink-cdc-connectors ............................... SUCCESS [ 11.822 s]
[INFO] flink-connector-debezium ........................... SUCCESS [  6.094 s]
[INFO] flink-connector-test-util .......................... SUCCESS [  0.812 s]
[INFO] flink-connector-mysql-cdc .......................... SUCCESS [ 11.715 s]
[INFO] flink-connector-postgres-cdc ....................... SUCCESS [  1.001 s]
[INFO] flink-connector-oracle-cdc ......................... SUCCESS [  1.162 s]
[INFO] flink-connector-mongodb-cdc ........................ SUCCESS [  1.119 s]
[INFO] flink-connector-sqlserver-cdc ...................... SUCCESS [  0.818 s]
[INFO] flink-sql-connector-mysql-cdc ...................... SUCCESS [  6.187 s]
[INFO] flink-sql-connector-postgres-cdc ................... SUCCESS [  4.314 s]
[INFO] flink-sql-connector-mongodb-cdc .................... SUCCESS [  4.149 s]
[INFO] flink-sql-connector-oracle-cdc ..................... SUCCESS [  6.307 s]
[INFO] flink-sql-connector-sqlserver-cdc .................. SUCCESS [  3.716 s]
[INFO] flink-format-changelog-json ........................ SUCCESS [  0.321 s]
[INFO] flink-cdc-e2e-tests ................................ SUCCESS [  0.906 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:00 min
[INFO] Finished at: 2022-02-17T21:00:10+08:00
[INFO] ------------------------------------------------------------------------

总结

一开始,没有把版本全面考虑,现在又要回滚版本,过程痛苦

数据湖存储解决方案之Iceberg Apache Iceberg 是由 Netflix 开发开源的,其于2018年11月16日进入 Apache 孵化器,是 Netflix 公司数据仓库基础。Apache Iceberg设计初衷是为了解决Hive离线数仓计算慢的问题,经过多年迭代已经发展成为构建数据湖服务的表格式标准。Iceberg 本质上是一种专为海量分析设计的表格式标准,可为主流计算引擎如 Presto、Spark 等提供高性能的读写和元数据管理能力。 阅读详情

相关推荐

实践数据湖iceberg 第二十三课 flink-sql从checkpoint重启

成功测试flink-sql以非jar包的方式从checkpoint重启,完成故障恢复测试 实践数据湖icerberg专栏 本专栏记录iceberg菜鸟到专家的过程,记录踩坑,填坑,iceberg特征的了解与原理的认知

spark_dev的博客 4884

Doris 整合 Iceberg+Flink CDC 构建实时湖仓一体的联邦查询分析架构

这里Doris On Iceberg我们只演示了Iceberg单表的查询,你还可以联合Doris的表,或者其他的ODBC外表,Hive外表,ES外表等进行联合查询分析,通过Doris对外提供统一的查询分析入口。自此我们完整从搭建Hadoop,hive、flink 、Mysql、Doris 及Doris On Iceberg的使用全部介绍完了,Doris朝着数据仓库和数据融合的架构演进,支持湖仓一体的联邦查询,给我们的开发带来更多的便利,更高效的开发,省去了很多数据同步的繁琐工作,快快来体验吧。

. 4733

【Flink】The primary key is necessary when enable ‘Key: ‘scan.incremental.snapshot.enabled‘ , default:

[ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: The primary key is necessary when enable 'Key: 'scan.incremental.snapshot.enabled' , default: true (fallback keys: [])' to 'true'

一杯咖啡半杯糖的博客 1649

利用Flink CDC和Flink SQL构建实时数仓Flink写入Doris

一、MySQL 开启binlog日志、创建用户 1.开启bin log MySQL 8.0默认开启了binlog,可以通过代码show variables like "%log_bin%";查询是否开启了,show variables like "%server_id%";查询服务器ID。 上图分别显示了bin long是否开启以及bin log所在的位置。 2.创建用户 CREATE USER 'flinktest' IDENTIFIED BY 'root'; GRANT SELECT,

lbship的博客 1万+

从混乱到清晰:用QJsonObject重构你的Qt网络API数据解析层(避坑指南)

本文详细介绍了如何使用QJsonObject重构Qt网络API数据解析层,避免常见的JSON解析陷阱。通过安全解析模式、数据绑定和性能优化技巧,帮助开发者构建高效、健壮的解析逻辑,提升代码可维护性和可读性。特别适用于处理复杂嵌套的JSON响应数据场景。

weixin_29011667的博客 230

Netty UDP

UDP是一种无连接的协议,它并不在通信双方之间建立连接,而是直接将数据包从发送端发送到接收端。UDP不保证数据包的可靠传输,也不保证数据包的顺序,因此其传输速度通常比TCP快,且系统开销较小。然而,这也意味着UDP在某些情况下可能会丢失数据包或数据包到达的顺序错乱。

王小工小工历程 2025

实践数据湖iceberg 第二十一课 flink1.13.5 + iceberg0.131 CDC(测试成功INSERT,变更操作失败)

实践数据湖icerberg专栏 本专栏记录iceberg菜鸟到专家的过程,记录踩坑,填坑,iceberg特征的了解与原理的认知

spark_dev的博客 3183

从零构建:四轴机械臂D-H参数建模与MATLAB实战指南

本文详细介绍了四轴机械臂D-H参数建模的完整流程与MATLAB实战应用。从机械臂运动学基础出发,解析D-H参数原理与坐标系建立规则,提供MATLAB Robotics Toolbox的安装、模型创建及正逆运动学求解的代码实现。特别针对四轴机械臂的逆运算优化、轨迹规划和奇异位形规避等高级应用给出实用解决方案,是机器人开发者的实战指南。

weixin_29062255的博客 419

实践数据湖iceberg 第二十四课 iceberg元数据详细解析

本文彻底解释 iceberg元数据 存储细节 实践数据湖icerberg专栏 本专栏记录iceberg菜鸟到专家的过程,记录踩坑,填坑,iceberg特征的了解与原理的认知

spark_dev的博客 5560

基于深度视觉实现机械臂对目标的识别与定位

Marker ID 和 Marker size 自选,在 launch 文件中做相应的修改(本教程演示使用 Marker ID:582,Marker size:30mm)根据相机和机械臂的安装方式不同,手眼标定分为眼在手上和眼在手外两种方式,双臂机器人的相机和机械臂基座的相对位置固定,所以应该采用眼在手外的手眼标定方式。后续的视觉引导机械臂抓取测试实验基于本实验实现,通过视觉引导右臂完成抓取目标物,所以默认已使用机械臂右臂和相机完成了手眼标定。文件,根据打印的marker 标签,需要配置。

realman_Rop的博客 3764

STM32CubeMX HAL实战:JY901S串口数据解析与姿态解算

本文详细介绍了如何使用STM32CubeMX HAL库实现JY901S六轴姿态传感器的串口数据解析与姿态解算。从基础硬件连接到USART3配置,再到数据接收状态机实现和传感器校准方法,最后深入讲解互补滤波与Mahony滤波算法在姿态解算中的应用。通过实战代码演示,帮助开发者快速掌握无人机、机器人等项目中关键姿态数据处理技术。

weixin_28703489的博客 432

实践数据湖iceberg 第二十二课 flink1.13.5 + iceberg0.131 CDC(CRUD测试成功)

成功测试 flink+mysql-cdc+iceberg数据湖的CRUD 实践数据湖icerberg专栏 本专栏记录iceberg菜鸟到专家的过程,记录踩坑,填坑,iceberg特征的了解与原理的认知

spark_dev的博客 2742

[特殊字符] 2026终极实战:Python爬取得物App球鞋实时交易价格 —— 从签名破解到数据可视化全栈指南

价格敏感度:热门鞋款(如Air Jordan 1、Yeezy 350、Dunk SB)价格每分钟都在波动,短线套利空间巨大。稀缺性:限量发售、联名款、地区限定,导致供需关系实时变化。数据壁垒:得物App使用自研WMS签名算法设备指纹绑定动态请求头加密,是爬虫工程师的“练兵场”。本博客将手把手带你从零搭建一套生产级得物球鞋价格爬虫系统,涵盖:抓包与逆向分析(mitmproxy + Frida)签名算法逆向(Python复刻)设备模拟与心跳保活(ADB + uiautomator2)

2201_76125261的博客 1124

实践数据湖iceberg 第二十五课 后台运行flink sql 增删改的效果

系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg 实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到iceberg(升级版本到flink1.12.7) 实践数据湖iceberg 第五课 hive catalog特点 实践数据湖iceberg 第六课 从kafka写入到iceber

spark_dev的博客 2548

PSINS工具箱学习(四)捷联惯导更新算法

原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。

实践出真理,接毕设/课设项目开发指导 605

AI原生SaaS应用的自动化运维体系构建

随着ChatGPT掀起的AI原生应用浪潮,越来越多SaaS(软件即服务)产品开始以"AI优先"的方式设计——从用户交互到核心功能,都深度依赖机器学习模型(如推荐算法、智能客服)、实时数据流(如用户行为分析)和弹性算力(如大模型推理)。这类应用的运维需求与传统SaaS完全不同:传统运维像"修水管",哪里漏了补哪里;AI原生运维则像"照顾会成长的宠物",需要实时感知模型状态、数据变化和流量波动,主动调整资源。

AI天才研究院 1079

实践数据湖iceberg 第二十八课 把公有仓库上不存在的包部署到本地仓库

**问题**: iceberg很多包,maven仓库没有,但iceberg提供了,通过pom编译打包,报错,原因是maven仓库没有这个包。 **解决方法**:把这些包通过maven命令把包打到本地仓库

spark_dev的博客 2000

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

实践数据湖iceberg 第二十七课 flink cdc 测试程序故障重启:能从上次checkpoint点继续工作

程序化部署,测试flink cdc重启恢复 测试思路:1.程序停止时,进行checkpoint记录,记录checkpoint的位置 2.程序停止时,写入数据, 记录写入的数据, 测试重启后,能否从故障点开始恢复。 结论:能

spark_dev的博客 4481

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

实践数据湖iceberg 第三十一课 使用github的flink-streaming-platform-web工具,管理flink任务流,测试cdc重启场景

flink重启,需要从checkpoint恢复。涉及到任务工程化管理,自研一套这种工具,很耗时,对小公司来说,吃力不讨好,所有寻找了个开源方案, 测试flink-streaming-platform-web ,支持sql,jar,各种集群模式提交,亲测可用

spark_dev的博客 1586

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试

lambda架构中, kafka->flink中支持 各种流函数, 数据入iceberg后,如何对icberg进行流操作,实现类似流函数的结果? 基于数据湖的流批一体是什么意思?

spark_dev的博客 2189

实践数据湖iceberg 第八课 hive与iceberg集成

系列文章目录 实践数据湖iceberg 第一课 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg 实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到iceberg(升级版本到flink1.12.7) 实践数据湖iceberg 第五课 hive catalog特点 实践数据湖iceberg 第六课 从kafka写入到iceberg失败

spark_dev的博客 8679

实践数据湖iceberg 第三十课 mysql->iceberg,不同客户端有时区问题

mysql->flink-sql-cdc->iceberg。从flink查数据时间没问题,从spark-sql查,时区+8了。对这个问题进行记录 最后解决方案: 源表没有timezone, 下游表需要设置local timezone,这样就没问题了!

spark_dev的博客 4444

实践数据湖iceberg 第二十六课 checkpoint设置方法

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言checkpoint设置方法一、pandas是什么?二、使用步骤1.引入库2.读入数据3.总结 前言 checkpoint设置方法 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? StreamExecutionEnvironment

spark_dev的博客 2495

实践数据湖iceberg 第三十三课 升级flink到1.14,自带functioin支持json函数

需要flink支持类似hive的get_json_object的功能,又不想自定义function, 有什么办法? 目前用flink1.13.5版本,看官网,自带function都没有这个函数,于是发现了新版本flink1.14提供了这些功能,于是有了升级的冲动。。。

spark_dev的博客 1671

实践数据湖iceberg 第四十一课 测试维表更新场景

flink sql 中kafka 表join mysql表,发现无法检测到mysql表到新增、update, 百度多篇文章,写得好像可以解决问题,但又没有详细的解决方法步骤,故而写本人,期后来者以填坑。本文记录测试思路、流程与结论。 测试结论:1.kaka做为驱动表源,可以通过lookup的方式,感知mysql维表的变化 2.iceberg表无法使用lookup方式,不能通过lookup感知mysql维表的变化

spark_dev的博客 1262

实践数据湖iceberg 第十九课 flink count iceberg,无结果问题

实践数据湖icerberg专栏 本专栏记录iceberg菜鸟到专家的过程,记录踩坑,填坑,iceberg特征的了解与原理的认知

spark_dev的博客 1371
上一篇: 实践数据湖iceberg 第十九课 flink count iceberg,无结果问题
下一篇: HiveServer2 频繁宕机根本原因分析
*星星之火*
博客等级 码龄12年 3798粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值