Apache Paimon 是一种流批统一的湖存储格式,支持高吞吐的写入和低延迟的查询。
从 ByteHouse 企业版 2.7 版本开始,支持了与 Paimon 集成,可以关联查询 Paimon Database和 Paimon Table,并且在将来的版本中会逐步支持 Paimon 的写入。
以下是 Paimon 数据类型与 ByteHouse 数据类型的映射关系。
Paimon 类型 | ByteHouse 类型 |
---|---|
Boolean | UInt8 |
TinyInt | Int8 |
SmallInt | Int16 |
Int | Int32 |
BigInt | Int64 |
Float | Float32 |
Double | Float64 |
Date | Date32 |
Time | 不支持 |
Timestamp | DateTime64 |
Char | FixedString |
Varchar | String |
Binary | FixedString |
VarBinary | String |
Decimal | Deciaml |
Array | Array |
Map | Map |
Row | Tuple |
ByteHouse 支持自动推导数据库表的列信息,并可以通过enable_schema_covert_fault_tolerance
参数用于控制在 Paimon 无法兼容时是报错还是忽略。具体使用可参考下面的示例。
我们可以在数据表维度建立 ByteHouse Table 到 Paimon Table 的映射。
Paimon 的数据可以存放在不同的文件系统上,例如 HDFS、S3。建表语句因文件系统和引擎的不同而有所差异。
建表时可以指定列信息,也可以不指定列信息(自动推导列信息)。
enable_schema_covert_fault_tolerance
参数用于控制在 Paimon 无法兼容时,是报错还是忽略。1
表示忽略;0
表示报错;默认值是1
。以下是指定列信息的 ByteHouse Table 到 Paimon Table 的映射示例。
CREATE TABLE `{tableName}` ON Cluster '{clusterName}' ( `col_boolean` BOOLEAN, `col_tinyint` Int8, `col_smallint` Int16, `col_int` Int32, `col_bigint` Int64, `col_float` Float32, `col_double` Float64, `col_decimal` DECIMAL(10, 2), `col_date` DATE32, `col_time` DateTime, `col_timestamp` DateTime64(6), `col_char` FixedString(10), `col_varchar` String, `col_binary` FixedString(50), `col_varbinary` String, `col_array_int` Array(Int32), `col_map` Map(String, Int32), `col_struct` Tuple(`field_smallint` Int16, `field_varchar` String, `field_time` DateTime, `field_decimal` DECIMAL(28, 6), `field_varbinary` String) ) ENGINE = PaimonCluster('{clusterName}', 'filesystem:HDFS', '{warehouse}', '{paimonDatabaseName}', '{paimonTableName}');
参数说明:
clusterName
:ByteHouse 集群名称。warehouse
:HDFS 数据路径。如hdfs://haruna/home/byte_flink_test/table_store/bytehouse_test
。paimonDatabaseName
:Paimon 数据库名称。paimonTableName
:Paimon 数据表名称。以下是不指定列信息的 ByteHouse Table 到 Paimon Table 的映射示例,系统自动推导对应的列信息。
CREATE TABLE `{tableName}` ON Cluster '{clusterName}' ENGINE = PaimonCluster('{clusterName}', 'filesystem:HDFS', '{warehouse}', '{paimonDatabaseName}', '{paimonTableName}') SETTINGS enable_schema_covert_fault_tolerance = 0;
参数说明:
clusterName
:ByteHouse 集群名称。warehouse
:HDFS 数据路径。如hdfs://haruna/home/byte_flink_test/table_store/bytehouse_test
。paimonDatabaseName
:Paimon 数据库名称。paimonTableName
:Paimon 数据表名称。建表时可以指定列信息,也可以不指定列信息(自动推导列信息)。
enable_schema_covert_fault_tolerance
参数用于控制在 Paimon 无法兼容时,是报错还是忽略。1
表示忽略;0
表示报错;默认值是1
。以下是指定列名的 ByteHouse Table 到 Paimon Table 的映射示例。
CREATE TABLE `{tableName}` ON Cluster '{clusterName}'( `col_boolean` BOOLEAN, `col_tinyint` Int8, `col_smallint` Int16, `col_int` Int32, `col_bigint` Int64, `col_float` Float32, `col_double` Float64, `col_decimal` DECIMAL(10, 2), `col_date` DATE32, `col_time` DateTime, `col_timestamp` DateTime64(6), `col_char` FixedString(10), `col_varchar` String, `col_binary` FixedString(50), `col_varbinary` String, `col_array_int` Array(Int32), `col_map` Map(String, Int32), `col_struct` Tuple(`field_smallint` Int16, `field_varchar` String, `field_time` DateTime, `field_decimal` DECIMAL(28, 6), `field_varbinary` String) ) ENGINE = PaimonCluster('{clusterName}', 'filesystem:S3', '${warehouse}', '{paimonDatabaseName}', '{paimonTableName}') SETTINGS region='{region}', endpoint='{endpoint}', ak_id='{accessKey}', ak_secret='{accessSecretKey}', s3_use_virtual_hosted_style=false, -- 域内(字节云)tos填false,火山云tos填true s3_extra_options='s3.paging.maximum=1000'; -- 域内(字节云)必须设置 s3.paging.maximum 这个参数,火山云可加可不加
参数说明:
clusterName
:ByteHouse 集群名称。warehouse
:S3 数据路径。如s3://test-dev-hcf/paimon
。paimonDatabaseName
:Paimon 数据库名称。paimonTableName
:Paimon 数据表名称。region
、 endpoint
:TOS 支持的 Region 及 Endpoint 信息,请参见地域及访问域名。accessKey
、accessSecretKey
:ToS 访问密钥(Access Key ID 和 Secret Access Key)信息,查看 AK 和 SK 信息的具体步骤,请参见查看 AKSK 信息。s3_use_virtual_hosted_style
:域内(字节云)tos填false,火山云tos填true。以下是不指定列名的 ByteHouse Table 到 Paimon Table 的映射示例,系统自动推导对应的列信息。
CREATE TABLE `{tableName}` ON Cluster '{clusterName}' ENGINE = PaimonCluster('{clusterName}', 'filesystem:S3', '${warehouse}', '{paimonDatabaseName}', '{paimonTableName}') SETTINGS region='{region}', endpoint='{endpoint}', ak_id='{accessKey}', ak_secret='{accessSecretKey}', s3_use_virtual_hosted_style=false, -- 域内(字节云)tos填false,火山云tos填true s3_extra_options='s3.paging.maximum=1000', -- 域内(字节云)必须设置 s3.paging.maximum 这个参数,火山云可加可不加 enable_schema_covert_fault_tolerance = 0;
参数说明:
clusterName
:ByteHouse 集群名称。warehouse
:S3 数据路径。如s3://test-dev-hcf/paimon
。paimonDatabaseName
:Paimon 数据库名称。paimonTableName
:Paimon 数据表名称。region
、 endpoint
:TOS 支持的 Region 及 Endpoint 信息,请参见地域及访问域名。accessKey
、accessSecretKey
:ToS 访问密钥(Access Key ID 和 Secret Access Key)信息,查看 AK 和 SK 信息的具体步骤,请参见查看 AKSK 信息。s3_use_virtual_hosted_style
:域内(字节云)tos填false,火山云tos填true。除了直接关联数据表,我们也可以在数据库维度建立 ByteHouse Database到 Paimon Database 的映射,系统会自动推导和关联数据表信息。
当Paimon中的类型无法在ByteHouse 中找到兼容类型时,可以通过enable_schema_covert_fault_tolerance
参数来控制报错还是忽略此问题。1
表示忽略;0
表示报错;默认值是1
。当设置成0
时,那些存在类型兼容问题的Table将无法展示出来。
Paimon 的数据可以存放在不同的文件系统上,例如 HDFS、S3。建库语句因文件系统和引擎的不同而有所差异。
以下是 ByteHouse Database到 Paimon Database 的映射示例,系统自动推导对应的列信息。
CREATE DATABASE {databaseName} ON Cluster '{clusterName}' engine = Paimon('{clusterName}', 'filesystem:HDFS', '{warehouse}', '{paimonDatabaseName}') SETTINGS enable_schema_covert_fault_tolerance = 1;
参数说明:
clusterName
:ByteHouse 集群名称。warehouse
:HDFS 数据路径。如hdfs://haruna/home/byte_flink_test/table_store/bytehouse_test
。paimonDatabaseName
:Paimon 数据库名称。paimonTableName
:Paimon 数据表名称。以下是 ByteHouse Database到 Paimon Database 的映射示例,系统自动推导对应的列信息。
CREATE DATABASE {databaseName} ON Cluster '{clusterName}' ENGINE = Paimon('{clusterName}', 'filesystem:S3', '{warehouse}', '{paimonDatabaseName}') SETTINGS region='{region}', endpoint='{endpoint}', ak_id='{accessKey}', ak_secret='{accessSecretKey}', s3_use_virtual_hosted_style=false, -- 域内(字节云)tos填false,火山云tos填true s3_extra_options='s3.paging.maximum=1000'; -- 域内(字节云)必须设置 s3.paging.maximum 这个参数,火山云可加可不加
参数说明:
clusterName
:ByteHouse集群名称。warehouse
:S3 数据路径。如s3://test-dev-hcf/paimon
。paimonDatabaseName
:Paimon 数据库名称。paimonTableName
:Paimon 数据表名称。region
、 endpoint
:TOS 支持的 Region 及 Endpoint 信息,请参见地域及访问域名。accessKey
、accessSecretKey
:ToS 访问密钥(Access Key ID 和 Secret Access Key)信息,查看 AK 和 SK 信息的具体步骤,请参见查看 AKSK 信息。s3_use_virtual_hosted_style
:域内(字节云)tos填false,火山云tos填true。