跳到主要内容
版本: 最新版本-3.5

特性支持:数据湖分析

从 v2.3 版本开始,StarRocks 支持通过外部 Catalog 管理外部数据源,并分析数据湖中的数据。

本文档概述了外部 Catalog 的特性支持以及涉及特性的支持版本。

通用特性

本节列出了外部 Catalog 特性的通用特性,包括存储系统、文件读取器、凭证、权限和数据缓存。

外部存储系统

存储系统支持版本
HDFSv2.3+
AWS S3v2.3+
Microsoft Azure Storagev3.0+
Google GCSv3.0+
阿里云 OSSv3.1+
华为云 OBSv3.1+
腾讯云 COSv3.1+
火山引擎 TOSv3.1+
金山云 KS3v3.1+
MinIOv3.1+
Ceph S3v3.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+
  • 除以上列出的 S3 兼容对象存储服务之外的其他 S3 兼容对象存储服务
    • 描述:您需要在 BE 配置项 s3_compatible_fs_list 中指定对象存储 URI 前缀。请注意,您必须使用在 s3_compatible_fs_list 中指定的前缀创建外部 Catalog。
    • 支持版本:v3.1.9+,v3.2.4+

压缩格式

本节仅列出了每种文件格式支持的压缩格式。 对于每个外部 Catalog 支持的文件格式,请参阅相应外部 Catalog 的章节。

文件格式压缩格式
ParquetNO_COMPRESSION,SNAPPY,LZ4,ZSTD,GZIP,LZO(v3.1.5+)
ORCNO_COMPRESSION,ZLIB,SNAPPY,LZO,LZ4,ZSTD
文本NO_COMPRESSION,LZO(v3.1.5+)
AvroNO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), BZIP2 (v3.2.1+)
RCFileNO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), GZIP (v3.2.1+)
SequenceFileNO_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 配置
  • block_cache_enable 替换为 datacache_enable
  • block_cache_mem_size 替换为 datacache_mem_size
  • block_cache_disk_size 替换为 datacache_disk_size
  • block_cache_disk_path 替换为 datacache_disk_path
  • block_cache_meta_path 替换为 datacache_meta_path
  • block_cache_block_size 替换为 datacache_block_size
会话变量
  • enable_scan_block_cache 替换为 enable_scan_datacache
  • enable_populate_block_cache 替换为 enable_populate_datacache
将集群升级到可以使用 Data Cache 的版本后,Block Cache 参数仍然有效。启用 Data Cache 后,新参数将覆盖旧参数。不允许混合使用两组参数。 否则,某些参数将不会生效。
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 属性 enable_cache_list_names 设置为 false,禁用 Hive 分区名称的缓存。
    • 优势:分区更改的可见性,没有延迟
    • 劣势:禁用分区名称缓存时性能较低。 每个查询都必须访问分区列表。
    • 支持版本:v2.5.5+
提示

如果您要求实时更新数据更改,而您的 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
SinkParquet (v3.2+), ORC (v3.3+), TEXT (v3.3+)

数据类型

不支持 INTERVAL、BINARY 和 UNION 类型。

TEXT 格式的 Hive 表不支持 MAP 和 STRUCT 类型。

Hive 视图

StarRocks 从 v3.1.0 开始支持查询 Hive 视图。

当 StarRocks 针对 Hive 视图执行查询时,它将尝试使用 StarRocks 和 Trino 的语法解析视图的定义。 如果 StarRocks 无法解析视图的定义,将返回错误。 StarRocks 有可能无法解析使用 Hive 或 Spark 独有的函数创建的 Hive 视图。

查询统计信息接口

特性支持版本
支持 SHOW CREATE TABLE 查看 Hive 表模式v3.0+
支持 ANALYZE 收集统计信息v3.2+
支持收集直方图和 STRUCT 子字段统计信息v3.3+

数据写入

特性支持版本注意
CREATE DATABASEv3.2+您可以选择指定在 Hive 中创建的数据库的位置,也可以不指定。 如果未指定数据库的位置,则需要指定在该数据库下创建的表的位置。 否则,将返回错误。 如果您已指定数据库的位置,则未指定位置的表将继承数据库的位置。 如果您已同时指定数据库和表的位置,则最终将使用表的位置。
CREATE TABLEv3.2+对于分区表和非分区表。
CREATE TABLE AS SELECTv3.2+
INSERT INTO/OVERWRITEv3.2+对于分区表和非分区表。
CREATE TABLE LIKEv3.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 为每个查询获取新快照。
    • 优点:文件和分区更改立即可见。
    • 缺点:由于每个查询的快照获取行为,性能较低。

文件格式

特性支持的文件格式
读取Parquet、ORC
SinkParquet
  • 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 DATABASEv3.1+您可以选择指定在 Iceberg 中创建的数据库的位置,也可以不指定。 如果未指定数据库的位置,则需要指定在该数据库下创建的表的位置。 否则,将返回错误。 如果您已指定数据库的位置,则未指定位置的表将继承数据库的位置。 如果您已同时指定数据库和表的位置,则最终将使用表的位置。
CREATE TABLEv3.1+对于分区表和非分区表。
CREATE TABLE AS SELECTv3.1+
INSERT INTO/OVERWRITEv3.1+对于分区表和非分区表。

其他支持

特性支持版本
支持读取 TIMESTAMP 类型分区格式 yyyy-MM-ddTHH:mmyyyy-MM-dd HH:mmv2.5.19+
v3.1.9+
v3.2.3+
支持 Iceberg 元数据表v3.4.1+
支持 Iceberg TimeTravelv3.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 类型支持版本
MySQLv3.0+
PostgreSQLv3.0+
ClickHousev3.3+
Oraclev3.2.9+
SQL Serverv3.2.9+

MySQL

特性支持版本
元数据缓存v3.3+

数据类型对应关系

MySQLStarRocks支持版本
BOOLEANBOOLEANv2.3+
BITBOOLEANv2.3+
SIGNED TINYINTTINYINTv2.3+
UNSIGNED TINYINTSMALLINTv3.0.6+
v3.1.2+
SIGNED SMALLINTSMALLINTv2.3+
UNSIGNED SMALLINTINTv3.0.6+
v3.1.2+
SIGNED INTEGERINTv2.3+
UNSIGNED INTEGERBIGINTv3.0.6+
v3.1.2+
SIGNED BIGINTBIGINTv2.3+
UNSIGNED BIGINTLARGEINTv3.0.6+
v3.1.2+
FLOATFLOATv2.3+
REALFLOATv3.0.1+
DOUBLEDOUBLEv2.3+
DECIMALDECIMAL32v2.3+
CHARVARCHAR(columnsize)v2.3+
VARCHARVARCHARv2.3+
TEXTVARCHAR(columnsize)v3.0.1+
DATEDATEv2.3+
TIMETIMEv3.1.9+
v3.2.4+
TIMESTAMPDATETIMEv2.3+

PostgreSQL

数据类型对应关系

PGSQLStarRocks支持版本
BITBOOLEANv2.3+
SMALLINTSMALLINTv2.3+
INTEGERINTv2.3+
BIGINTBIGINTv2.3+
REALFLOATv2.3+
DOUBLEDOUBLEv2.3+
NUMERICDECIMAL32v2.3+
CHARVARCHAR(columnsize)v2.3+
VARCHARVARCHARv2.3+
TEXTVARCHAR(columnsize)v2.3+
DATEDATEv2.3+
TIMESTAMPDATETIMEv2.3+
UUIDVARBINARYv3.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。