特性支持:数据湖分析
从 v2.3 版本开始,StarRocks 支持通过外部 Catalog 管理外部数据源,并分析数据湖中的数据。
本文档概述了外部 Catalog 的特性支持以及涉及特性的支持版本。
通用特性
本节列出了外部 Catalog 特性的通用特性,包括存储系统、文件读取器、凭证、权限和数据缓存。
外部存储系统
存储系统 | 支持版本 |
---|---|
HDFS | v2.3+ |
AWS S3 | v2.3+ |
Microsoft Azure Storage | v3.0+ |
Google GCS | v3.0+ |
阿里云 OSS | v3.1+ |
华为云 OBS | v3.1+ |
腾讯云 COS | v3.1+ |
火山引擎 TOS | v3.1+ |
金山云 KS3 | v3.1+ |
MinIO | v3.1+ |
Ceph S3 | v3.1+ |
除了对以上列出的存储系统的原生支持外,StarRocks 还支持以下类型的对象存储服务
- HDFS 兼容的对象存储服务,例如 COS Cloud HDFS、OSS-HDFS 和 OBS PFS
- 描述:您需要在 BE 配置项
fallback_to_hadoop_fs_list
中指定对象存储 URI 前缀,并将云厂商提供的 .jar 包上传到 /lib/hadoop/hdfs/ 目录。请注意,您必须使用在fallback_to_hadoop_fs_list
中指定的前缀创建外部 Catalog。 - 支持版本:v3.1.9+,v3.2.4+
- 描述:您需要在 BE 配置项
- 除以上列出的 S3 兼容对象存储服务之外的其他 S3 兼容对象存储服务
- 描述:您需要在 BE 配置项
s3_compatible_fs_list
中指定对象存储 URI 前缀。请注意,您必须使用在s3_compatible_fs_list
中指定的前缀创建外部 Catalog。 - 支持版本:v3.1.9+,v3.2.4+
- 描述:您需要在 BE 配置项
压缩格式
本节仅列出了每种文件格式支持的压缩格式。 对于每个外部 Catalog 支持的文件格式,请参阅相应外部 Catalog 的章节。
文件格式 | 压缩格式 |
---|---|
Parquet | NO_COMPRESSION,SNAPPY,LZ4,ZSTD,GZIP,LZO(v3.1.5+) |
ORC | NO_COMPRESSION,ZLIB,SNAPPY,LZO,LZ4,ZSTD |
文本 | NO_COMPRESSION,LZO(v3.1.5+) |
Avro | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), BZIP2 (v3.2.1+) |
RCFile | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), GZIP (v3.2.1+) |
SequenceFile | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), BZIP2 (v3.2.1+), GZIP (v3.2.1+) |
Avro、RCFile 和 SequenceFile 文件格式由 Java Native Interface (JNI) 而不是 StarRocks 中的原生读取器读取。 因此,这些文件格式的读取性能可能不如 Parquet 和 ORC。
管理、凭证和访问控制
特性 | 描述 | 支持版本 |
---|---|---|
信息模式 | 支持外部 Catalog 的信息模式。 | v3.2+ |
数据湖访问控制 | 支持 StarRocks 用于外部 Catalog 的原生 RBAC 模型。 您可以像管理 StarRocks 默认 Catalog 中的数据库、表和视图(目前仅 Hive 视图和 Iceberge 视图)的权限一样,管理外部 Catalog 中的权限。 | v3.0+ |
重用 Apache Ranger 上的外部服务 | 支持重用 Apache Ranger 上的外部服务(例如 Hive Service)进行访问控制。 | v3.1.9+ |
Kerberos 身份验证 | 支持 HDFS 或 Hive Metastore 的 Kerberos 身份验证。 | v2.3+ |
数据缓存
特性 | 描述 | 支持版本 |
---|---|---|
数据缓存(Block Cache) | 从 v2.5 开始,StarRocks 支持使用 CacheLib 实现的数据缓存功能(当时称为 Block Cache),这导致其可扩展性的优化潜力有限。 从 v3.0 开始,StarRocks 重构了缓存实现并为数据缓存添加了新功能,从而在每个后续版本中都获得了更好的性能。 | v2.5+ |
本地磁盘之间的数据重新平衡 | 支持数据重新平衡策略,以确保将数据倾斜控制在 10% 以下。 | v3.2+ |
将 Block Cache 替换为 Data Cache | 参数变更 BE 配置
| v3.2+ |
用于监控数据缓存的 API 的新指标 | 支持监控数据缓存(包括缓存容量和命中率)的单个 API。 您可以通过接口 http://${BE_HOST}:${BE_HTTP_PORT}/api/datacache/stat 查看数据缓存指标。 | v3.2.3+ |
数据缓存的内存跟踪器 | 支持数据缓存的内存跟踪器。 您可以通过接口 http://${BE_HOST}:${BE_HTTP_PORT}/mem_tracker 查看与内存相关的指标。 | v3.1.8+ |
数据缓存预热 | 通过执行 CACHE SELECT,您可以提前主动将所需的数据从远程存储填充到缓存中,以防止第一次查询花费太多时间来获取数据。 CACHE SELECT 不会打印数据或进行计算。 它仅获取数据。 | v3.3+ |
Hive Catalog
元数据
Hive Catalog 对 Hive Metastore (HMS) 和 AWS Glue 的支持大多重叠,只是不建议 HMS 使用自动增量更新功能。 在大多数情况下,建议使用默认配置。
元数据检索的性能很大程度上取决于用户的 HMS 或 HDFS NameNode 的性能。 请考虑所有因素,并根据测试结果进行判断。
- [默认和推荐] 最佳性能,可容忍分钟级数据不一致
- 配置:您可以使用默认设置。 10 分钟内(默认情况下)更新的数据不可见。 在此持续时间内,旧数据将返回给查询。
- 优势:最佳查询性能。
- 劣势:延迟导致的数据不一致。
- 支持版本:v2.5.5+(在 v2.5 中默认禁用,在 v3.0+ 中默认启用)
- 新加载的数据(文件)的即时可见性,无需手动刷新
- 配置:通过将 Catalog 属性
enable_remote_file_cache
设置为false
,禁用基础数据文件的元数据缓存。 - 优势:文件更改的可见性,没有延迟。
- 劣势:禁用文件元数据缓存时性能较低。 每个查询都必须访问文件列表。
- 支持版本:v2.5.5+
- 配置:通过将 Catalog 属性
- 分区更改的即时可见性,无需手动刷新
- 配置:通过将 Catalog 属性
enable_cache_list_names
设置为false
,禁用 Hive 分区名称的缓存。 - 优势:分区更改的可见性,没有延迟
- 劣势:禁用分区名称缓存时性能较低。 每个查询都必须访问分区列表。
- 支持版本:v2.5.5+
- 配置:通过将 Catalog 属性
如果您要求实时更新数据更改,而您的 HMS 的性能尚未优化,您可以启用缓存,禁用自动增量更新,并在上游发生数据更改时通过调度系统手动刷新元数据(使用 REFRESH EXTERNAL TABLE)。
存储系统
特性 | 描述 | 支持版本 |
---|---|---|
递归子目录列表 | 通过将 Catalog 属性 enable_recursive_listing 设置为 true 来启用递归子目录列表。 启用递归列表后,StarRocks 将从表及其分区以及表及其分区的物理位置内的子目录读取数据。 此功能旨在解决多层嵌套目录的问题。 | v2.5.9+ v3.0.4+(在 v2.5 和 v3.0 中默认禁用,在 v3.1+ 中默认启用) |
文件格式和数据类型
文件格式
特性 | 支持的文件格式 |
---|---|
读取 | Parquet、ORC、TEXT、Avro、RCFile、SequenceFile |
Sink | Parquet (v3.2+), ORC (v3.3+), TEXT (v3.3+) |
数据类型
不支持 INTERVAL、BINARY 和 UNION 类型。
TEXT 格式的 Hive 表不支持 MAP 和 STRUCT 类型。
Hive 视图
StarRocks 从 v3.1.0 开始支持查询 Hive 视图。
查询统计信息接口
特性 | 支持版本 |
---|---|
支持 SHOW CREATE TABLE 查看 Hive 表模式 | v3.0+ |
支持 ANALYZE 收集统计信息 | v3.2+ |
支持收集直方图和 STRUCT 子字段统计信息 | v3.3+ |
数据写入
特性 | 支持版本 | 注意 |
---|---|---|
CREATE DATABASE | v3.2+ | 您可以选择指定在 Hive 中创建的数据库的位置,也可以不指定。 如果未指定数据库的位置,则需要指定在该数据库下创建的表的位置。 否则,将返回错误。 如果您已指定数据库的位置,则未指定位置的表将继承数据库的位置。 如果您已同时指定数据库和表的位置,则最终将使用表的位置。 |
CREATE TABLE | v3.2+ | 对于分区表和非分区表。 |
CREATE TABLE AS SELECT | v3.2+ | |
INSERT INTO/OVERWRITE | v3.2+ | 对于分区表和非分区表。 |
CREATE TABLE LIKE | v3.2.4+ | |
Sink 文件大小 | v3.3+ | 您可以使用会话变量 connector_sink_target_max_file_size 定义要写入的每个数据文件的最大大小。 |
Iceberg Catalog
元数据
Iceberg Catalog 支持 HMS、Glue 和 Tabular 作为其 Metastore。 在大多数情况下,建议使用默认配置。
请注意,会话变量 enable_iceberg_metadata_cache
的默认值已更改,以适应不同的场景
- 从 v3.2.1 到 v3.2.3,无论使用什么 Metastore 服务,此参数默认设置为
true
。 - 在 v3.2.4 及更高版本中,如果 Iceberg 集群使用 AWS Glue 作为 Metastore,则此参数仍默认为
true
。 但是,如果 Iceberg 集群使用其他 Metastore 服务(例如 Hive Metastore),则此参数默认为false
。 - 从 v3.3.0 开始,此参数的默认值再次设置为
true
,因为 StarRocks 支持新的 Iceberg 元数据框架。 Iceberg Catalog 和 Hive Catalog 现在使用相同的元数据轮询机制和 FE 配置项background_refresh_metadata_interval_millis
。
特性 | 支持版本 |
---|---|
分布式元数据计划(建议用于元数据量大的场景) | v3.3+ |
清单缓存(建议用于元数据量小但对延迟要求高的场景) | v3.3+ |
从 v3.3.0 开始,StarRocks 支持上述元数据读取和缓存策略。 系统将根据您集群中的机器自动调整策略的选择。 通常,您不需要更改它。 由于启用了元数据缓存,因此可能会因性能考虑而影响元数据的新鲜度。 因此,您可以根据您的具体查询要求进行调整
- [默认和推荐] 最佳性能,可容忍分钟级数据不一致
- 设置:无需额外设置。 默认情况下,10 分钟内更新的数据不可见。 在此期间,查询将返回旧数据。
- 优点:最佳查询性能。
- 缺点:延迟导致的数据不一致。
- 导入以及分区添加或删除生成的新数据文件立即可见,无需手动刷新
- 设置:将 Catalog 属性
iceberg_table_cache_ttl_sec
设置为0
,以允许 StarRocks 为每个查询获取新快照。 - 优点:文件和分区更改立即可见。
- 缺点:由于每个查询的快照获取行为,性能较低。
- 设置:将 Catalog 属性
文件格式
特性 | 支持的文件格式 |
---|---|
读取 | Parquet、ORC |
Sink | Parquet |
- Parquet 格式和 ORC 格式的 Iceberg V1 表均支持位置删除和相等删除。
- ORC 格式的 Iceberg V2 表从 v3.0.0 开始支持位置删除,Parquet 格式的表从 v3.1.0 开始支持位置删除。
- ORC 格式的 Iceberg V2 表从 v3.1.8 和 v3.2.3 开始支持相等删除,Parquet 格式的表从 v3.2.5 开始支持相等删除。
Iceberg 视图
StarRocks 从 v3.3.2 开始支持查询 Iceberg 视图。 目前,仅支持通过 StarRocks 创建的 Iceberg 视图。
查询统计信息接口
特性 | 支持版本 |
---|---|
支持 SHOW CREATE TABLE 查看 Iceberg 表模式 | v3.0+ |
支持 ANALYZE 收集统计信息 | v3.2+ |
支持收集直方图和 STRUCT 子字段统计信息 | v3.3+ |
数据写入
特性 | 支持版本 | 注意 |
---|---|---|
CREATE DATABASE | v3.1+ | 您可以选择指定在 Iceberg 中创建的数据库的位置,也可以不指定。 如果未指定数据库的位置,则需要指定在该数据库下创建的表的位置。 否则,将返回错误。 如果您已指定数据库的位置,则未指定位置的表将继承数据库的位置。 如果您已同时指定数据库和表的位置,则最终将使用表的位置。 |
CREATE TABLE | v3.1+ | 对于分区表和非分区表。 |
CREATE TABLE AS SELECT | v3.1+ | |
INSERT INTO/OVERWRITE | v3.1+ | 对于分区表和非分区表。 |
其他支持
特性 | 支持版本 |
---|---|
支持读取 TIMESTAMP 类型分区格式 yyyy-MM-ddTHH:mm 和 yyyy-MM-dd HH:mm 。 | v2.5.19+ v3.1.9+ v3.2.3+ |
支持 Iceberg 元数据表 | v3.4.1+ |
支持 Iceberg TimeTravel | v3.4.0+ |
Hudi Catalog
- StarRocks 支持查询 Hudi 中 Parquet 格式的数据,并且 Parquet 文件支持 SNAPPY、LZ4、ZSTD、GZIP 和 NO_COMPRESSION 压缩格式。
- StarRocks 完全支持 Hudi 的 Copy On Write (COW) 表和 Merge On Read (MOR) 表。
- StarRocks 从 v3.0.0 开始支持 SHOW CREATE TABLE 查看 Hudi 表模式。
- StarRocks v3.5.0 支持 Hudi 0.15.0。
Delta Lake Catalog
- StarRocks 支持查询 Delta Lake 中 Parquet 格式的数据,并且 Parquet 文件支持 SNAPPY、LZ4、ZSTD、GZIP 和 NO_COMPRESSION 压缩格式。
- StarRocks 不支持查询 Delta Lake 中的 MAP 类型和 STRUCT 类型数据。
- StarRocks 从 v3.0.0 开始支持 SHOW CREATE TABLE 查看 Delta Lake 表模式。
JDBC Catalog
Catalog 类型 | 支持版本 |
---|---|
MySQL | v3.0+ |
PostgreSQL | v3.0+ |
ClickHouse | v3.3+ |
Oracle | v3.2.9+ |
SQL Server | v3.2.9+ |
MySQL
特性 | 支持版本 |
---|---|
元数据缓存 | v3.3+ |
数据类型对应关系
MySQL | StarRocks | 支持版本 |
---|---|---|
BOOLEAN | BOOLEAN | v2.3+ |
BIT | BOOLEAN | v2.3+ |
SIGNED TINYINT | TINYINT | v2.3+ |
UNSIGNED TINYINT | SMALLINT | v3.0.6+ v3.1.2+ |
SIGNED SMALLINT | SMALLINT | v2.3+ |
UNSIGNED SMALLINT | INT | v3.0.6+ v3.1.2+ |
SIGNED INTEGER | INT | v2.3+ |
UNSIGNED INTEGER | BIGINT | v3.0.6+ v3.1.2+ |
SIGNED BIGINT | BIGINT | v2.3+ |
UNSIGNED BIGINT | LARGEINT | v3.0.6+ v3.1.2+ |
FLOAT | FLOAT | v2.3+ |
REAL | FLOAT | v3.0.1+ |
DOUBLE | DOUBLE | v2.3+ |
DECIMAL | DECIMAL32 | v2.3+ |
CHAR | VARCHAR(columnsize) | v2.3+ |
VARCHAR | VARCHAR | v2.3+ |
TEXT | VARCHAR(columnsize) | v3.0.1+ |
DATE | DATE | v2.3+ |
TIME | TIME | v3.1.9+ v3.2.4+ |
TIMESTAMP | DATETIME | v2.3+ |
PostgreSQL
数据类型对应关系
PGSQL | StarRocks | 支持版本 |
---|---|---|
BIT | BOOLEAN | v2.3+ |
SMALLINT | SMALLINT | v2.3+ |
INTEGER | INT | v2.3+ |
BIGINT | BIGINT | v2.3+ |
REAL | FLOAT | v2.3+ |
DOUBLE | DOUBLE | v2.3+ |
NUMERIC | DECIMAL32 | v2.3+ |
CHAR | VARCHAR(columnsize) | v2.3+ |
VARCHAR | VARCHAR | v2.3+ |
TEXT | VARCHAR(columnsize) | v2.3+ |
DATE | DATE | v2.3+ |
TIMESTAMP | DATETIME | v2.3+ |
UUID | VARBINARY | v3.5.3+ |
ClickHouse
从 v3.3.0 开始支持。
Oracle
从 v3.2.9 开始支持。
SQL Server
从 v3.2.9 开始支持。
Elasticsearch Catalog
从 v3.1.0 开始支持 Elasticsearch Catalog。
Paimon Catalog
从 v3.1.0 开始支持 Paimon Catalog。
MaxCompute Catalog
从 v3.3.0 开始支持 MaxCompute Catalog。
Kudu Catalog
从 v3.3.0 开始支持 Kudu Catalog。