Apache Iceberg 使用教程
1. 项目介绍
Apache Iceberg 是一个用于大数据分析的高性能表格式。它为大数据带来了 SQL 表的可靠性和简单性,同时使得 Spark、Trino、Flink、Presto、Hive 和 Impala 等引擎能够安全地同时处理同一张表。Iceberg 的设计目标是提供一种可靠、高效的方式来管理大规模分析数据集,支持灵活的 SQL 命令、模式演进、隐藏分区、时间旅行和回滚等功能。
2. 项目快速启动
2.1 环境准备
在开始之前,请确保你已经安装了以下软件:
- Java 8 或更高版本
- Apache Maven 3.6.3 或更高版本
- Apache Spark 3.0.1 或更高版本
2.2 下载并构建项目
首先,克隆 Iceberg 项目到本地:
git clone https://github.com/Netflix/iceberg.git
cd iceberg
然后,使用 Maven 构建项目:
mvn clean install -DskipTests
2.3 配置 Spark 使用 Iceberg
在 Spark 配置文件中添加以下配置:
spark.sql.extensions org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
spark.sql.catalog.spark_catalog org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.spark_catalog.type hadoop
spark.sql.catalog.spark_catalog.warehouse /path/to/warehouse
2.4 创建和查询 Iceberg 表
启动 Spark Shell:
spark-shell --packages org.apache.iceberg:iceberg-spark-runtime:0.12.0
在 Spark Shell 中创建一个 Iceberg 表:
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().appName("IcebergExample").getOrCreate()
spark.sql("CREATE TABLE iceberg_table (id INT, name STRING) USING iceberg")
spark.sql("INSERT INTO iceberg_table VALUES (1, 'Alice'), (2, 'Bob')")
spark.sql("SELECT * FROM iceberg_table").show()
3. 应用案例和最佳实践
3.1 数据湖中的 Iceberg
Iceberg 非常适合用于数据湖场景,因为它提供了高效的表管理和查询性能。通过 Iceberg,你可以轻松地管理大规模数据集,并支持多种查询引擎的并发访问。
3.2 模式演进
Iceberg 支持灵活的模式演进,允许你添加、删除、重命名和重新排序列,而无需重写整个表。例如:
ALTER TABLE iceberg_table ADD COLUMNS (age INT)
ALTER TABLE iceberg_table RENAME COLUMN name TO full_name
3.3 时间旅行和回滚
Iceberg 支持时间旅行和回滚功能,允许你查询历史版本的表数据或回滚到之前的版本。例如:
SELECT * FROM iceberg_table FOR VERSION AS OF 1234567890
4. 典型生态项目
4.1 Apache Spark
Apache Spark 是 Iceberg 的主要集成引擎之一,支持通过 Spark SQL 进行表管理和查询。
4.2 Apache Flink
Apache Flink 也支持 Iceberg,允许你使用 Flink 的流处理能力来处理 Iceberg 表中的数据。
4.3 Trino
Trino(原 Presto SQL)是一个高性能的分布式 SQL 查询引擎,支持查询 Iceberg 表。
4.4 Apache Hive
Apache Hive 可以通过 Hive Metastore 与 Iceberg 集成,支持 Hive 查询引擎访问 Iceberg 表。
通过这些生态项目的支持,Iceberg 能够在大数据分析领域提供强大的功能和灵活性。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0153- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0112