实践数据湖iceberg 第一课

大数据的下一代变革-数据湖之Iceberg 1. 什么是数据湖 1.1 什么是数据湖 数据湖是一个集中式的存储库,允许以任意模式存储多个来源,所有结构化和非结构化数据,可以按照原样存储数据,无需对数据进行结构化处理,并运行不同类型的分析,对数据进行加工,例如:大数据处理,实时分析,机器学习,以指导做出更好的决策。 1.2 大数据为什么需要数据湖 当前基于Hive的离线数据仓库已经非常成熟,在传统的离线数据仓库中对记录级别的数据进行更新是非常麻烦的,需要对待更新的数据所属的整个分区,甚至时整个表进行全面覆盖才行,由于离线数仓多级逐层加工的架构设计,数据 阅读详情

数据湖iceberg 系列文章目录


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

数据胡越来越热门,我也开始探索数据湖在公司落地,把数据湖实践入门、填坑做个记录,也方便以后大家入门


一、数据湖iceberg实践环境说明

1.hadoop版本 社区版 2.7.2
2. hive版本 2.3.6
3. flink版本1.11.6 目前flink出来flink1.14.2,但先选择flink1.11看看,原因是官网建议用flink1.11,减少用其他版本造成的坑。

官网说明: Step.1 Downloading the flink 1.11.x binary package from the apache flink download page. We now use scala 2.12 to archive the apache iceberg-flink-runtime jar, so it’s recommended to use flink 1.11 bundled with scala 2.12.

二、启动flink sql客户端

1. 启动flink standalone集群

https://iceberg.apache.org/#flink/#preparation-when-using-flink-sql-client

代码如下(示例):

# HADOOP_HOME is your hadoop root directory after unpack the binary package.
export HADOOP_CLASSPATH=`$HADOOP_HOME/bin/hadoop classpath`

# Start the flink standalone cluster
./bin/start-cluster.sh

2.下载flink iceberg runtime的包,启动flink-sql

代码如下(示例):
下载地址:https://repo.maven.apache.org/maven2/org/apache/iceberg/iceberg-flink-runtime/
iceberg-flink-runtime-xxx.jar
我使用 iceberg-flink-runtime-0.11.1.jar

启动flink sql并带上iceberg

bin/sql-client.sh embedded -j /opt/software/iceberg-flink-runtime-0.11.1.jar shell

3.创建基于hadoop的catalog

创建脚本,warehouse的路径,它会自动创建
hdfs路径里面 ns是命名空间,但namenode的使用ip:port代替
在flink-sql client 中执行脚本

CREATE CATALOG hadoop_catalog WITH (
  'type'='iceberg',
  'catalog-type'='hadoop',
  'warehouse'='hdfs://ns/user/hive/warehouse/iceberg_hadoop_catalog',
  'property-version'='1'
);

会自动创建路径 /user/hive/warehouse/iceberg_hadoop_catalog/default, 下面是空的
[root@hadoop101 ~]# hadoop fs -ls /user/hive/warehouse/iceberg_hadoop_catalog/default

Flink SQL> show catalogs;
default_catalog
hadoop_catalog

创建数据库

Flink SQL> create database iceberg_db;
[INFO] Database has been created.

Flink SQL> show databases;
default_database
iceberg_db

创建表


Flink SQL> CREATE TABLE `hadoop_catalog`.`default`.`sample` (
>     id BIGINT COMMENT 'unique id',
>     data STRING
> );
[INFO] Table has been created.

查看表, 发现从目前库找,找不到。

Flink SQL> use default_database;

Flink SQL> show tables;
[INFO] Result was empty.

Flink SQL> use iceberg_db;

Flink SQL> show tables;
[INFO] Result was empty.

从hdfs路径去找,发现,生成了表的目录和元信息
在这里插入图片描述

4.写数据,读数据测试(hadoop catalog的限制)

hadoop catalog 创建的东西只能在本客户端使用

打开另一个sql客户端,写数据

bin/sql-client.sh embedded -j /opt/software/iceberg-flink-runtime-0.11.1.jar shell

Flink SQL> INSERT INTO `hadoop_catalog`.`default`.`sample` VALUES (1, 'a');
[INFO] Submitting SQL update statement to the cluster...
[ERROR] Could not execute SQL statement. Reason:
org.apache.flink.table.api.TableException: Sink `hadoop_catalog`.`default`.`sample` does not exists


Flink SQL> show databases;
default_database

发现在第一个客户端创建的database和表,都没有, 我先认为这个hadoop catalog的限制。

步骤1: 把所有sql-client的客户端退出,重新进入sql-client
步骤2:检查hadoop上hadoop_catalog对应的表是否还在,发现表还在
在这里插入图片描述

发现1. 之前创建的database没有了,获取hadoop_catalog ,
结论: 客户端退出后,catalog在hadoop上的信息还在,但客户端需要重新建立catalog,catalog下的表不用重新建

Flink SQL> show catalogs;
default_catalog

重新创建catalog
Flink SQL> CREATE CATALOG hadoop_catalog WITH (
>   'type'='iceberg',
>   'catalog-type'='hadoop',
>   'warehouse'='hdfs://ns/user/hive/warehouse/iceberg_hadoop_catalog',
>   'property-version'='1'
> );
[INFO] Catalog has been created.

Flink SQL> use hadoop_catalog;
[ERROR] Could not execute SQL statement. Reason:
org.apache.flink.table.catalog.exceptions.CatalogException: A database with name [hadoop_catalog] does not exist in the catalog: [default_catalog].

Flink SQL> use catalog hadoop_catalog;

Flink SQL> show tables;
sample
sample_like

Flink SQL> show databases;
default

Flink SQL> show catalogs;
default_catalog
hadoop_catalog

插入两条数据,再查询出来看看

Flink SQL> INSERT INTO `hadoop_catalog`.`default`.`sample` VALUES (1, 'a');
[INFO] Submitting SQL update statement to the cluster...
[INFO] Table update statement has been successfully submitted to the cluster:
Job ID: a7008acfe1389133c1ae6a5c00e4d611


Flink SQL> INSERT INTO `hadoop_catalog`.`default`.`sample` VALUES (2, 'b');
[INFO] Submitting SQL update statement to the cluster...
[INFO] Table update statement has been successfully submitted to the cluster:
Job ID: f642dd21e493d630824cb9b30098de3c

Flink SQL> select * from sample;

查询结果:
在这里插入图片描述

看看hdfs上的文件
在这里插入图片描述
查看data的数据: 发现 2个数据文件
在这里插入图片描述

查看metadata,发现metadata比较多
在这里插入图片描述
之前没完整记录第一执行后的metadata信息,需要重跑,这个流程,记录完整变更的信息

5.创建基于hive的catalog

5.1 创建hive的catalog失败

创建报错,错误原因,如下图, 没有hive的依赖
建hive catalog语法

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

Flink SQL>  CREATE CATALOG hive_catalog WITH (
>   'type'='iceberg',
>   'catalog-type'='hive',
>   'uri'='thrift://hadoop101:9083',
>   'clients'='5',
>   'property-version'='1',
>   'warehouse'='/user/hive/warehouse'
> );
> 


Exception in thread "main" org.apache.flink.table.client.SqlClientException: Unexpected exception. This is a bug. Please consider filing an issue.
        at org.apache.flink.table.client.SqlClient.main(SqlClient.java:222)
Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/metastore/api/NoSuchObjectException
        at org.apache.iceberg.flink.CatalogLoader$HiveCatalogLoader.loadCatalog(CatalogLoader.java:112)
        at org.apache.iceberg.flink.FlinkCatalog.<init>(FlinkCatalog.java:111)
        at org.apache.iceberg.flink.FlinkCatalogFactory.createCatalog(FlinkCatalogFactory.java:127)
        at org.apache.iceberg.flink.FlinkCatalogFactory.createCatalog(FlinkCatalogFactory.java:117)
        at org.apache.flink.table.api.internal.TableEnvironmentImpl.createCatalog(TableEnvironmentImpl.java:1110)
        at org.apache.flink.table.api.internal.TableEnvironmentImpl.executeOperation(TableEnvironmentImpl.java:1043)
        at org.apache.flink.table.api.internal.TableEnvironmentImpl.executeSql(TableEnvironmentImpl.java:693)
        at org.apache.flink.table.client.gateway.local.LocalExecutor.lambda$executeSql$7(LocalExecutor.java:366)
        at org.apache.flink.table.client.gateway.local.ExecutionContext.wrapClassLoader(ExecutionContext.java:254)
        at org.apache.flink.table.client.gateway.local.LocalExecutor.executeSql(LocalExecutor.java:366)
        at org.apache.flink.table.client.cli.CliClient.callDdl(CliClient.java:651)
        at org.apache.flink.table.client.cli.CliClient.callDdl(CliClient.java:646)
        at org.apache.flink.table.client.cli.CliClient.callCommand(CliClient.java:362)
        at java.util.Optional.ifPresent(Optional.java:159)
        at org.apache.flink.table.client.cli.CliClient.open(CliClient.java:210)
        at org.apache.flink.table.client.SqlClient.openCli(SqlClient.java:147)
        at org.apache.flink.table.client.SqlClient.start(SqlClient.java:115)
        at org.apache.flink.table.client.SqlClient.main(SqlClient.java:208)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.metastore.api.NoSuchObjectException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at org.apache.flink.util.FlinkUserCodeClassLoader.loadClassWithoutExceptionHandling(FlinkUserCodeClassLoader.java:62)
        at org.apache.flink.util.ChildFirstClassLoader.loadClassWithoutExceptionHandling(ChildFirstClassLoader.java:65)
        at org.apache.flink.util.FlinkUserCodeClassLoader.loadClass(FlinkUserCodeClassLoader.java:47)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 18 more

Shutting down the session...
done.
);

解决方法: 增加hive的classpath 看看, 官网没看到增加的方法。。。
想到个办法:直接把hive/lib的classpath放到hadoop classpath上,不就ok了?

export HADOOP_CLASSPATH=`$HADOOP_HOME/bin/hadoop classpath`:/opt/module/hive/lib/*.jar

改完,重跑,没效果

继续努力
解决问题思路,
分析问题: 安装报错提示, 是包没找到,由这一行发出来的
org.apache.iceberg.flink.CatalogLoader$HiveCatalogLoader.loadCatalog(CatalogLoader.java:112)
把iceberg的源码下载回来对于0.11分支的。 发现对于的hive是2.3.7版本,跟我使用的hive2.3.6没大版本变动。
解决方法:排除了hive版本问题,hive的classpath也引进来了,继续看官网
最后解决方法:增加flink-sql-connector-hive-2.3.6_2.11-1.11.0.jar

[root@hadoop101 software]# bin/sql-client.sh embedded -j /opt/software/iceberg-flink-runtime-0.11.1.jar  -j /opt/software/flink-sql-connector-hive-2.3.6_2.11-1.11.0.jar shell

5.1 成功创建catalog

[root@hadoop101 software]# sql-client.sh embedded -j /opt/software/iceberg-flink-runtime-0.11.1.jar  -j /opt/software/flink-sql-connector-hive-2.3.6_2.11-1.11.0.jar shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/flink-1.11.6/lib/log4j-slf4j-impl-2.16.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
No default environment specified.
Searching for '/opt/module/flink-1.11.6/conf/sql-client-defaults.yaml'...found.
Reading default environment from: file:/opt/module/flink-1.11.6/conf/sql-client-defaults.yaml
No session environment specified.

Command history file path: /root/.flink-sql-history
                                   ▒▓██▓██▒
                               ▓████▒▒█▓▒▓███▓▒
                            ▓███▓░░        ▒▒▒▓██▒  ▒
                          ░██▒   ▒▒▓▓█▓▓▒░      ▒████
                          ██▒         ░▒▓███▒    ▒█▒█▒
                            ░▓█            ███   ▓░▒██
                              ▓█       ▒▒▒▒▒▓██▓░▒░▓▓█
                            █░ █   ▒▒░       ███▓▓█ ▒█▒▒▒
                            ████░   ▒▓█▓      ██▒▒▒ ▓███▒
                         ░▒█▓▓██       ▓█▒    ▓█▒▓██▓ ░█░
                   ▓░▒▓████▒ ██         ▒█    █▓░▒█▒░▒█▒
                  ███▓░██▓  ▓█           █   █▓ ▒▓█▓▓█▒
                ░██▓  ░█░            █  █▒ ▒█████▓▒ ██▓░▒
               ███░ ░ █░          ▓ ░█ █████▒░░    ░█░▓  ▓░
              ██▓█ ▒▒▓▒          ▓███████▓░       ▒█▒ ▒▓ ▓██▓
           ▒██▓ ▓█ █▓█       ░▒█████▓▓▒░         ██▒▒  █ ▒  ▓█▒
           ▓█▓  ▓█ ██▓ ░▓▓▓▓▓▓▓▒              ▒██▓           ░█▒
           ▓█    █ ▓███▓▒░              ░▓▓▓███▓          ░▒░ ▓█
           ██▓    ██▒    ░▒▓▓███▓▓▓▓▓██████▓▒            ▓███  █
          ▓███▒ ███   ░▓▓▒░░   ░▓████▓░                  ░▒▓▒  █▓
          █▓▒▒▓▓██  ░▒▒░░░▒▒▒▒▓██▓░                            █▓
          ██ ▓░▒█   ▓▓▓▓▒░░  ▒█▓       ▒▓▓██▓    ▓▒          ▒▒▓
          ▓█▓ ▓▒█  █▓░  ░▒▓▓██▒            ░▓█▒   ▒▒▒░▒▒▓█████▒
           ██░ ▓█▒█▒  ▒▓▓▒  ▓█                █░      ░░░░   ░█▒
           ▓█   ▒█▓   ░     █░                ▒█              █▓
            █▓   ██         █░                 ▓▓        ▒█▓▓▓▒█░
             █▓ ░▓██░       ▓▒                  ▓█▓▒░░░▒▓█░    ▒█
              ██   ▓█▓░      ▒                    ░▒█▒██▒      ▓▓
               ▓█▒   ▒█▓▒░                         ▒▒ █▒█▓▒▒░░▒██
                ░██▒    ▒▓▓▒                     ▓██▓▒█▒ ░▓▓▓▓▒█▓
                  ░▓██▒                          ▓░  ▒█▓█  ░░▒▒▒
                      ▒▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▓▓  ▓░▒█░
          
    ______ _ _       _       _____  ____  _         _____ _ _            _  BETA   
   |  ____| (_)     | |     / ____|/ __ \| |       / ____| (_)          | |  
   | |__  | |_ _ __ | | __ | (___ | |  | | |      | |    | |_  ___ _ __ | |_ 
   |  __| | | | '_ \| |/ /  \___ \| |  | | |      | |    | | |/ _ \ '_ \| __|
   | |    | | | | | |   <   ____) | |__| | |____  | |____| | |  __/ | | | |_ 
   |_|    |_|_|_| |_|_|\_\ |_____/ \___\_\______|  \_____|_|_|\___|_| |_|\__|
          
        Welcome! Enter 'HELP;' to list all available commands. 'QUIT;' to exit.


Flink SQL> CREATE CATALOG hive_catalog WITH (
>   'type'='iceberg',
>   'catalog-type'='hive',
>   'uri'='thrift://hadoop101:9083',
>   'clients'='5',
>   'property-version'='1',
>   'hive-conf-dir'='/opt/module/hive/conf'
> );
2022-01-13 10:58:27,528 INFO  org.apache.hadoop.hive.conf.HiveConf                         [] - Found configuration file null
2022-01-13 10:58:27,741 WARN  org.apache.hadoop.hive.conf.HiveConf                         [] - HiveConf of name hive.metastore.event.db.notification.api.auth does not exist
[INFO] Catalog has been created.

5.3 测试基于hive 的catalog对多客户端的支持

在本客户端查看

Flink SQL> show catalogs;
default_catalog
hive_catalog

新开一个客户端,(第一个客户端没有退出)

Flink SQL> show catalogs;
default_catalog

Flink SQL> show databases;
default_database

结论: 没有看到hive_catalog, 说明: 对hadoop,hive的catalog, 不同客户端是不共享的。


总结

按照官网跑: [link](https://iceberg.apache.org/#flink/).

1.了解iceberg 支持3种catalog保存机制
2.目前实践了第一种 保存到hadoop上,这种方式,多客户端无法共享catalog,无法上生产
3.需要使用基于hive的catalog

Iceberg教程 Iceberg是一个面向海量数据分析场景的开放表格式(Table Format)。 阅读详情

相关推荐

数据仓库Iceberg表设计:时间旅行+快照管理+分区优化,实战教程

需求分析:明确业务需求(如数据保留时间、查询模式);表结构设计:定义字段类型、主键(可选);快照配置:设置(如7天);分区设计:选择隐式分区键(如),结合查询模式;性能优化:启用自动合并小文件()和自动压缩(测试验证:测试时间旅行、快照管理、分区查询的效果。安全第一:始终启用快照保留(),避免误删无法恢复;性能优先:选择合理的分区键,启用自动合并小文件和压缩;灵活调整:使用分区演化动态调整分区策略,避免重新导入数据;监控元数据:定期查看元数据文件夹的大小,避免元数据膨胀。

架构师的AI之路,分享AI应用开发架构的学习与实践。 497

第一章 Iceberg入门介绍

Iceberg基础简介,包括数据层、元数据层、状态后端存储

qq_27924553的博客 2385

实践数据湖iceberg 第十二课 catalog是什么

系列文章目录 实践数据湖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的博客 3849

Iceberg从入门到精通系列之一:Iceberg核心概念理解

Manifest(清单):描述Table状态的元数据,包括Table的Schema(模式)、Partition Spec(分区规范)和Current Snapshot ID(当前快照ID)等信息。Partition(分区):将数据按照指定规则分隔成的逻辑单元,Partition由一个或多个数据块(Block)组成。Block(块):其中存储的是Partition的数据,每个块都有一个唯一的ID,块的大小可以在表级别进行配置。创建了一个包含id和name字段的表,并且定义了以id字段为分区键的分区规则。

zhengzaifeidelushang的博客 8690

数据湖架构与实时数仓实践:Hudi、Iceberg、Kafka + Flink + Spark

本篇文章介绍了数据湖架构实时数仓设计,并通过 Kafka + Flink + Spark 构建高效的数据湖方案。未来,数据湖将在存算分离数据湖仓一体化云原生大数据分析等方向持续优化,为企业提供更高效的实时分析能力。

晴天彩虹雨的博客 1978

使用 Iceberg on Kubernetes 打造新一代云原生数据湖

背景 大数据发展至今,按照 Google 2003年发布的《The Google File System》第一篇论文算起,已走过17个年头。可惜的是 Google 当时并没有开源其技术,“仅仅”是发表了三篇技术论文。所以回头看,只能算是揭开了大数据时代的帷幕。随着 Hadoop 的诞生,大数据进入了高速发展的时代,大数据的红利及商业价值也不断被释放。现今大数据存储和处理需求越来越多样化,在后 Hadoop 时代,如何构建一个统一的数据湖存储,并在其上进行多种形式的数据分析,成了企业构建大数据生态的一个重要方

吉小白的博客 2115

数据湖技术 Iceberg 的探索与实践

本文资料来自2020年9月5日由快手技术团队主办的快手大数据平台架构技术交流会,分享者邵赛赛,腾讯数据平台部数据湖内核技术负责人,资深大数据工程师,Apache Spark PMC me...

过往记忆大数据 7142

Apache Iceberg 深度解析:构建企业级数据湖的最佳实践

在数字经济时代,数据已成为企业最核心的战略资产之一。为了充分挖掘数据价值,企业纷纷构建数据湖,期望将海量、多源、异构的数据汇聚一处,进行统一存储和分析。数据可靠性差:缺乏强事务保证,容易出现数据不一致、部分写入或脏数据。元数据管理混乱:依赖于Hive Metastore的简单元数据模型,难以支持复杂的表结构演化和细粒度的数据组织。查询性能低下:基于目录的分区方式导致文件扫描范围过大,谓词下推能力有限。数据治理困难:缺乏有效的版本控制、行级权限和数据血缘追踪能力。Schema演化痛苦。

AI Python 编程之道的博客 991

实践数据湖iceberg 第七课 实时写入到iceberg

系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言1. 制造数据2. 通过flume把制造的数据,写入到kafka2.1 flume把日志直接写到kafka的配置文件2.2 准备启动flume agent的脚本2.3 检查是否写入到kafka3.把kakfa的行为数据入湖3.1.定义kafka表3.1.1 使用csv格式读取看看3.1.2 使用raw格式读取看看3.2 定义iceberg表3.3 kafka表入到iceberg4.观察生成的数据5.

spark_dev的博客 3206

Hudi、Iceberg 、 Paimon 数据湖选型对比

Hudi、Iceberg 和 Paimon 是当前数据湖领域的三大主流开源框架,均致力于解决数据湖场景下的等核心问题,但设计理念和适用场景存在差异。

LXP 2509

Apache Iceberg结合Parquet列式存储:数据湖事务一致性实践

你有没有遇到过这样的场景?这些问题的根源,在于。Parquet作为列式存储格式,解决了查询性能问题,但数据写入、更新、删除的原子性、隔离性全得靠工程师手动保证——这在大规模数据场景下,几乎是「不可能完成的任务」。而Apache Iceberg的出现,正好补上了数据湖的「事务层」短板。当Iceberg与Parquet结合时,既能保留列式存储的查询效率,又能实现等企业级特性。这不是「1+1=2」的简单组合,而是「数据湖从野蛮生长到工业化运营」的关键一步。

AI智能探索者的博客 1126

【iceberg】数据湖与iceberg调研与实战

【iceberg】数据湖与iceberg调研

hiliang521的博客 1644

实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式

实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式前言1、hadoop catalog创建1.1 执行建立 catalog脚本1.2 查看hdfs 目录2.建表2.1 建表2.2 查看建表后的目录结构1.写入数据1.1 写入1条数据1.2 写入数据本质上触发一个flink jiob1.3 查看hdfs目录1.4 再写一

spark_dev的博客 3840

实践数据湖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

数据湖及湖仓一体化项目学习框架

利用框架的力量,看懂游戏规则,才是入行的前提大多数人不懂,不会,不做,才是你的机会,你得行动,不能畏首畏尾选择才是拉差距关键,风向,比你流的汗水重要一万倍,逆风划船要累死人的上面这些看似没用,但又很重要,这里我就不在详述作用,有兴趣的同学可以看看我的学习框架的重要性我是怎么坚持学习的怎么确定学习目标这个栏目为初学者全面整理数据湖必学知识,内容是按照体系划分的,带你从基础知识到项目实战,想学会就得自律加坚持,赶快行动吧。1、数据湖技术Hudi。

Lansonli(蓝深李)的博客 5208

别再死磕V1了!手把手教你用WPS Web Office V3 SDK快速集成(附Java Demo避坑指南)

本文详细介绍了如何从WPS Web Office V1迁移到V3版本,重点讲解了V3在性能、安全性和扩展性上的优势,以及Java开发者如何快速集成V3 SDK。文章包含核心功能实现、高级功能适配(如Solon框架)和常见问题排查指南,帮助开发者高效完成迁移并避免常见陷阱。

weixin_27215337的博客 335

数据湖YYDS! Flink+IceBerg实时数据湖实践

点击上方蓝色字体,选择“设为星标”回复”面试“获取更多惊喜数据湖的前世今生互联网技术发展的当下,数据是各大公司最宝贵的资源之一已经是不争的事实。收据的收集、存储和分析已经成为科技公司最重要...

微信搜:import_bigdata,大数据领域硬核原创作者 1727

Qt+PCL实战:如何用QVTKOpenGLNativeWidget高效渲染3D点云(附完整代码)

本文深入解析了Qt与PCL结合使用QVTKOpenGLNativeWidget进行高效3D点云渲染的实战技术。通过对比传统QVTKWidget,详细介绍了QVTKOpenGLNativeWidget在渲染效率、内存占用和兼容性方面的显著优势,并提供了完整的代码示例和性能优化策略,助力开发者在工业检测、自动驾驶等领域实现更高效的点云可视化。

keras9composer的博客 686

数据湖 | 还不知道什么是Iceberg?一篇文章带你走进Iceberg的世界!

文章目录1. Iceberg是什么?2. 能力与优势2.1 Iceberg都有哪些功能?2.2 Iceberg能力验证3. Iceberg应用场景参考文档 近年来“数据湖”的概念在大数据领域如火如荼。delta、Apache Iceberg和Apache Hudi是市面上流行的三大数据湖解决方案,那到底这些方案是什么?又怎么使用?本文参考官网文档,带你快速入门iceberg,并从几个简单的例子出发,感受iceberg的能力。 1. Iceberg是什么? Iceberg定位在计算引擎之下,存储之上,通过特定

search-lemon的博客 2万+

Cursor聊天记录迁移工具:实现跨设备AI对话同步与备份

在软件开发中,数据持久化与迁移是常见需求,尤其当工具依赖本地存储时。SQLite作为轻量级关系型数据库,因其嵌入式、零配置特性,常被用于存储应用状态与用户数据。其WAL(预写式日志)模式提升了并发性能,但也增加了数据操作复杂性。通过命令行工具与JSON序列化技术,可以实现结构化数据的提取、转换与安全迁移,这对于保障开发资产的连续性与可移植性具有重要价值。例如,在AI辅助编程场景下,开发者与AI的对话记录包含关键的问题分析、解决方案与决策逻辑,是重要的上下文资产。cursor-chat-transfer工具正

weixin_42551967的博客 533

51单片机+HX711电子秤Proteus仿真保姆级教程(附完整源码与避坑指南)

本文详细介绍了51单片机与HX711电子秤在Proteus仿真中的全流程实战指南,包括电路设计、核心代码实现、典型问题排查及系统集成等关键步骤。特别提供了HX711驱动程序的编写技巧和称重数据处理算法,帮助开发者快速搭建高精度电子秤仿真系统,并避免常见的设计陷阱。

weixin_30752699的博客 413

iceberg数据湖实践踩坑记录

iceberg数据湖实践踩坑记录坑点描述一、数据湖存储二、flink读写iceberg三、presto接入iceberg查询总结 坑点描述 iceberg是Dremio公司开源的一个数据湖项目,核心思想借鉴于dremio数据湖引擎。Dremio的其商业化产品dremio是一个基于SaaS的数据服务平台(Daas),其技术团队中有从mapr公司出来的两个技术大佬,毋庸置疑其技术实力。目前,iceberg在多家大厂也有不少成功案例。 在经过案例的研究后,决定进行iceberg数据湖实践。在实践过程中遇到的一些

baidu_26507163的博客 2580

Codex 100个真实案例 - 用AI自动生成API测试用例(接口测试全覆盖)

API 测试是保障后端质量的关键环节,但手写测试用例既枯燥又容易遗漏。本案例将展示如何用 Codex 从 Swagger/OpenAPI 规范文档自动生成 pytest 测试用例——包括正常流程测试、边界值测试、异常参数测试、性能压力测试,还能自动生成 Mock 数据和精美的 HTML 测试报告。全程自然语言驱动,让 API 测试覆盖率从 0 飙到 90%+!

yueyeguzhuo的专栏 270
上一篇: cloudera监控全是问号
下一篇: 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式
*星星之火*
博客等级 码龄12年 3798粉丝 222原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值