云服务器内容精选

  • 文件组织方式 如下图所示,Iceberg将数据分为元数据管理层、数据存储层。 元数据层: metadata文件为json格式。存储当前版本的元数据信息,所有快照信息。 manifest list文件,即snapshot文件或清单列表文件,为avro格式。一次commit生成一个快照文件,每行存储一个manifest file的路径、其存储的数据文件的分区范围,增加删除了几个数据文件等信息,在查询时提供过滤信息,加快速度。 manifest文件,为avro格式。存储多个数据文件的信息列表,每行是一个数据文件的详细描述,包括状态、路径、分区信息、列级别的统计信息(最大最小值、空值数等)、文件大小以及文件里数据行数等。其中列级别的统计信息在扫描表数据时可过滤掉不必要的文件。 数据存储层:支持不同的文件格式,包括parquet、orc、avro。
  • 基本概念 Table(表格):Iceberg的最基本的概念是Table,它是一个数据表格的抽象表示。Table包含了表格的元数据信息、数据存储位置、分区策略等信息。 Partition(分区):Partition是将Table中的数据按照指定的规则划分为多个子集的过程。Partition可以基于数据的某些特征进行划分,例如按照时间、地理位置、产品类型等进行分区。 Metadata(元数据):Iceberg的元数据是指描述Table中的数据结构、分区策略、数据版本等信息的数据。元数据存储在持久化的存储介质中,例如HDFS、S3等。 Snapshot(快照):Snapshot是指Table在某个时间点上的数据视图,它包含了Table当前版本的数据和元数据信息。 Manifest(清单):Manifest是指Table中数据文件的清单列表,它包含了每个数据文件的元数据信息(例如文件路径、大小、分区信息等)。
  • 主要特点 可扩展性:Iceberg可轻松扩展到支持海量的数据表格和庞大的数据集合。 查询性能:Iceberg的元数据管理和查询优化功能可以提高数据查询的性能。 数据版本管理:Iceberg提供了可靠的数据版本管理功能,可以帮助用户对数据进行版本控制和回溯。 易于使用:Iceberg提供了简单易用的API和命令行工具,使得用户可以轻松地创建、管理和查询数据表格。 灵活的分区策略:Iceberg支持灵活的分区策略,可以根据不同的数据集合进行分区管理。 多版本数据支持:Iceberg支持多版本数据,可以帮助用户对数据进行版本管理和回溯。 多种数据格式支持:Iceberg支持多种数据格式,包括Parquet、ORC、Avro等。
  • 创建Iceberg External表 通过CREATE EXTERNAL TABLE语法创建Iceberg表。与一般EXTERNAL表相比,创建Iceberg EXTERNAL表没有特别的参数需要指定,只需要指定STORE AS ICEBERG即可。具体语法可参见CREATE EXTERNAL TABLE。 当前创建Iceberg External表仅支持创建V2表。 示例: 1 2 3 4 5 6 7 8 9 CREATE EXTERNAL TABLE iceberg_ext( col1 int, col2 varchar(20), ... )PARTITION BY (col3 bigint) TABLEPROPERTIES ( 'write.metadata.delete-after-commit.enabled'='true', 'write.metadata.previous-versions-max' = '10' ) STORE AS ICEBERG; 其中write.metadata.delete-after-commit.enabled控制是否在提交事务后删除旧版本元数据文件,默认情况为false。true的情况下,可以通过write.metadata.previous-versions-max设定保留多少个metadata。 使用这两个参数需要谨慎,虽然删除元数据文件可以节省存储空间,但需要确保不会影响数据的一致性和可用性。