快递查询网站建设,获得网站php管理员密码,口碑营销策略和技巧,wordpress怎么上线目录
1、实时更新
1.1、实时大批量更新
1.2、支持定义合并引擎
1.3、支持定义更新日志生成器
2、海量数据追加处理
2.1、append table
2.2、快速查询 3、数据湖功能#xff08;类比#xff1a;hudi、iceberg、delta#xff09;
3.1、支持 ACID 事务
3.2、支持 Time…目录
1、实时更新
1.1、实时大批量更新
1.2、支持定义合并引擎
1.3、支持定义更新日志生成器
2、海量数据追加处理
2.1、append table
2.2、快速查询 3、数据湖功能类比hudi、iceberg、delta
3.1、支持 ACID 事务
3.2、支持 Time travel时间旅行
3.3、支持 Schema Evolution元数据变更
3.4、可扩展元数据存储 PB 级大规模数据集和存储大量分区
3.4.1、表级别的元数据管理
3.4.2、架构可扩展性
3.4.3、自定义扩展
3.4.4、版本管理和一致性
3.4.5、与其他系统的兼容性
3.5、分区过期设置
4、参考 1、实时更新
1.1、实时大批量更新 通过 Flink streaming 可以实现 primary key 表的实时大批量更新。
1.2、支持定义合并引擎 用户可以随心所欲地更新记录。复制以保留最后一行或部分更新或汇总记录或第一行提供了很灵活的处理方式总之可以用户自己决定。 主键表的数据更新提供了以下合并机制 合并机制 详情 1去重Deduplicate 去重机制deduplicate是默认的数据合并机制。对于多条具有相同primary key的数据Paimon结果表仅会保留最新一条数据并丢弃其它具有primary key的数据。 说明 如果最新一条数据是一条delete消息所有具有该primary key的数据都将被丢弃。 2部分更新Partial Update 通过指定部分更新机制partial-update您可以通过多条消息对数据进行逐步更新并最终得到完整的数据。具体来说具有相同primary key的新数据将会覆盖原来的数据但值为null的列不会进行覆盖。 例如假设Paimon结果表按顺序收到了以下三条数据 1, 23.0, 10, NULL 1, NULL, NULL, This is a book 1, 25.2, NULL, NULL 第一列是primary key则最终结果为1, 25.2, 10, This is a book。 说明 如果需要流读partial-update的结果必须将changelog-producer参数设置为lookup或full-compaction。 partial-update无法处理delete消息。您可以设置partial-update.ignore-delete参数以忽略delete消息。 3预聚合Aggregation 部分场景下可能只关心聚合后的值。预聚合机制aggregation将具有相同primary key的数据根据您指定的聚合函数进行聚合。对于不属于primary key的每一列都需要通过fields.field-name.aggregate-function指定一个聚合函数否则该列将默认使用last_non_null_value聚合函数。例如考虑以下Paimon表的定义。 CREATE TABLE MyTable (product_id BIGINT,price DOUBLE,sales BIGINT,PRIMARY KEY (product_id) NOT ENFORCED
) WITH (merge-engine aggregation,fields.price.aggregate-function max,fields.sales.aggregate-function sum
); price列将会根据max函数进行聚合而sales列将会根据sum函数进行聚合。给定两条输入数据 1, 23.0, 15和 1, 30.2, 20最终结果为1, 30.2, 35。当前支持的聚合函数与对应的数据类型如下 sum支持DECIMAL、TINYINT、SMALLINT、INTEGER、BIGINT、FLOAT和DOUBLE。 min和max支持DECIMAL、TINYINT、SMALLINT、INTEGER、BIGINT、FLOAT、DOUBLE、DATE、TIME、TIMESTAMP和TIMESTAMP_LTZ。 last_value和last_non_null_value支持所有数据类型。 listagg支持STRING。 bool_and和bool_or支持BOOLEAN。 说明 只有sum函数支持回撤与删除数据其它聚合函数不支持回撤与删除。如果您需要某些列忽略回撤与删除消息可以设置fields.${field_name}.ignore-retracttrue。 如果需要流读aggregation的结果必须将changelog-producer参数设置为lookup或full-compaction。 参数设置如下 参数 说明 类型 必填 默认值 备注 merge-engine 相同primary key数据的合并机制。 String 否 deduplicate 参数取值如下 deduplicate仅保留最新一条。 partial-update用最新数据中非null的列更新相同primary key的现有数据其它列保持不变。 aggregation通过指定聚合函数进行预聚合。 关于数据合并机制的具体分析详情请参见数据合并机制。
1.3、支持定义更新日志生成器 用户可以在更新中为合并引擎生成正确、完整的更新日志简化流式分析。 Paimon 每个数据文件包含多行每行都有一种行类型用字母表示该类型将行标记为插入 (I)、更新 (U) 或删除 (-D)。更新可以支持变更日志生成器的更新前 (-U) 和更新后 (U)。 2、海量数据追加处理
2.1、append table 追加表非 primary key table 提供大规模批处理和流式处理能力并实现小文件合并。 Paimon 表目前支持的写入模式如下: 模式 详情 Change-log change-log写入模式是Paimon表的默认写入模式。该写入模式支持根据primary key对数据进行插入、删除与更新您也可以在该写入模式下使用上文提到的数据合并机制与增量数据产生机制。 Append-only append-only写入模式仅支持数据的插入且不支持primary key。该模式比change-log模式更加高效可在对数据新鲜度要求一般的场景下例如分钟级新鲜度作为消息队列的替代品。 关于append-only写入模式的详细介绍请参见Apache Paimon官方文档。在使用append-only写入模式时需要注意以下两点 建议您根据实际需求设置bucket-key参数否则Paimon表将根据所有列的值进行分桶计算效率较低。 append-only 写入模式可在一定程度上保证数据的产出顺序具体的产出顺序为 如果两条数据来自不同的分区若设置了scan.plan-sort-partition参数则分区值较小的数据将首先产出。否则来自较早创建的分区的数据将首先产出。 如果两条数据来自同一分区的同一分桶则较早写入的数据将首先产出。 如果两条数据来自同一分区的不同分桶由于不同分桶由不同的并发进行处理因此不保证两条数据的产出顺序。
2.2、快速查询 支持数据压缩使用 Z 排序优化文件布局使用最小最大等索引提供基于数据跳转的快速查询。 Z-order 基本介绍Z-Order 是一种可以将多维数据压缩到一维的技术在时空索引以及图像方面使用较广。Z曲线可以以一条无限长的一维曲线填充任意维度的空间对于数据库的一条数据来说我们可以将其多个要排序的字段看作是数据的多个维度z曲线可以通过一定的规则将多维数据映射到一维数据上构建 z-value 进而可以基于该一维数据进行排序。 3、数据湖功能类比hudi、iceberg、delta
3.1、支持 ACID 事务 Paimon 通过提供 ACID原子性、一致性、隔离性、持久性事务确保数据的一致性和可靠性这对于在复杂数据处理流水线中维护数据完整性至关重要。
3.2、支持 Time travel时间旅行 当用户在查询数据的时候 若要从之前的某一个时间点开始查询数据 即任务启动时想要查一些历史数据 则需用时间旅行这个特性。用户可通过 scan.mode 参数设置Paimon源表的消费位点。scan.mode 参数的可选值以及行为如下 参数值 批读行为 流读行为 default 默认值根据其他参数确定实际的行为。 如果设置了scan.timestamp-millis则行为与from-timestamp参数值相同。 如果设置了scan.snapshot-id则行为与from-snapshot参数值相同 如果以上两个参数都没有设置则行为与latest-full参数值相同。 latest-full 读产出表的最新 snapshot。 作业启动时读首先产出表的最新snapshot之后持续产出增量数据。 compacted-full 只读取产出表最近一次 compact后的snapshot。 作业启动时首先产出表最近一次compact后的snapshot之后持续产出增量数据。 latest 与latest-full相同。 只读取最新的变更数据 from-timestamp 只读取指定时间戳(含该时间戳)的快照中的所有数据。 作业启动时不产出snapshot之后持续产出从scan.timestamp-millis开始含的增量数据。 from-snapshot 产出表的snapshotsnapshot编号由scan.snapshot-id指定。即只读取指定 id 的快照中的所有数据。 作业启动时不产出snapshot之后持续产出从scan.snapshot-id开始含的增量数据。即从指定 id 的快照开始读取变更数据(包含后续新增) from-snapshot-full 与from-snapshot相同。 作业启动时产出表的snapshotsnapshot编号由scan.snapshot-id指定之后持续产出从scan.snapshot-id开始不含的增量数据。
3.3、支持 Schema Evolution元数据变更 即源端增加列、不用重启 Flink 作业、可以自动识别实时导入到 Paimon 表。目前Paimon支持的 CDC 形式包括Mysql、Postgres、Kafka、Mongo、Pulsar。
3.4、可扩展元数据存储 PB 级大规模数据集和存储大量分区 Apache Paimon 元数据可扩展主要指的是其在元数据管理上的扩展能力和灵活性。具体包括以下方面
3.4.1、表级别的元数据管理
多表支持Paimon能够同时管理大量表的元数据且性能随表的数量扩展良好。动态分区管理支持大规模分区动态加载和裁剪适合高并发场景和海量分区表。
3.4.2、架构可扩展性
元数据分布式存储Paimon的元数据可以存储在分布式存储如 HDFS、S3或集中式系统如 Hive Metastore中能够支持大规模的元数据查询和更新。元数据分片和分区通过分布式存储或缓存优化元数据访问提升查询效率减少热点问题。
3.4.3、自定义扩展
Schema 演进支持字段的添加、修改、删除等操作而无需重新生成全量数据表。自定义元数据支持用户根据需求自定义元数据字段如表注释、存储策略、访问权限等。
3.4.4、版本管理和一致性
多版本管理Paimon对表的元数据支持多版本管理可以随时回滚或查询历史元数据。事务支持确保元数据更新的一致性和隔离性ACID即便在高并发操作下也能保证正确性。
3.4.5、与其他系统的兼容性
与 Hive Metastore 的集成通过标准接口与现有大数据生态兼容如 Hive、Spark、Flink 等。统一视图Paimon中的元数据能够被多个计算引擎同时使用实现数据湖与数据仓的统一。
3.5、分区过期设置
Paimon表支持自动删除存活时长大于分区过期时长的分区的功能以节省存储成本。详情如下 存活时长当前系统时间减去分区值转化后的时间戳。分区值转化后的时间戳是按照以下顺序转化而得 通过格式串partition.timestamp-pattern参数将一个分区值转换为时间字符串。 在该格式串中分区列由美元符号$加上列名表示。例如假设分区列由year、month、day、hour四列组成格式串$year-$month-$day $hour:00:00会将分区year2023,month04,day21,hour17转换为字符串2023-04-21 17:00:00。 通过格式串partition.timestamp-formatter参数将时间字符串转换为时间戳。 如果该参数没有设置将默认尝试yyyy-MM-dd HH:mm:ss与yyyy-MM-dd两个格式串。任何Java的DateTimeFormatter兼容的格式串都可以使用。 分区过期时间您设置的partition.expiration-time参数值。 4、参考
Overview | Apache Paimon
Paimon连接器_实时计算 Flink版(Flink)-阿里云帮助中心
Understanding Apache Paimons Consistency Model Part 1 — Jack Vanlightly