本文介绍云数据库 SelectDB 版如何通过Catalog集成Paimon数据源,对Paimon数据源进行联邦分析。
前提条件
注意事项
SelectDB不同的版本支持的Paimon不同。
SelectDB3.0支持Paimon 0.7及以下版本。
SelectDB4.0支持Paimon 0.8及以下版本。
目前,云数据库 SelectDB 版对External Catalog中的数据只支持读操作。
操作步骤
本示例中,paimon_catalog为目标External Catalog,根据您的实际情况,替换成自己的参数。
步骤一:连接实例
连接SelectDB实例。具体操作,请参见通过MySQL客户端连接云数据库SelectDB版实例。
步骤二:集成Paimon
SelectDB通过创建External Catalog集成外部数据源。Paimon Catalog支持基于两种Metastore类型创建Catalog:
Filesystem(默认):Paimon元数据和数据均存储在Filesystem。
Hive Metastore:Paimon元数据存储在Hive Metastore中,您可以直接从Hive访问这些表。
根据您Paimon的Metastore类型,选择合适的Catalog类型。
基于FileSystem
基于HDFS构建的Paimon
CREATE CATALOG `paimon_catalog` PROPERTIES (
"type" = "paimon",
"warehouse" = "hdfs://HDFS8000871/user/paimon",
"dfs.nameservices" = "HDFS8000871",
"dfs.ha.namenodes.HDFS8000871" = "nn1,nn2",
"dfs.namenode.rpc-address.HDFS8000871.nn1" = "172.21.0.1:4007",
"dfs.namenode.rpc-address.HDFS8000871.nn2" = "172.21.0.2:4007",
"dfs.client.failover.proxy.provider.HDFS8000871" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
"hadoop.username" = "hadoop"
);
参数说明
创建Paimon Catalog中dfs相关的参数与Paimon配置文件hdfs-site.xml中的参数是一一映射关系,参数和参数含义都相同。所以此处dfs相关参数值均需与配置文件hdfs-site.xml中的值保持一致。
参数 | 是否必选 | 默认值 | 说明 |
type | 是 | 无 | Catalog类型,固定为paimon。 |
warehouse | 是 | 无 | 仓库的HDFS路径。 |
hadoop.username | 否 | 无 | HDFS用户名。 |
dfs.nameservices | 否 | 无 | Name Service名称。 |
dfs.ha.namenodes.[nameservice ID] | 否 | 无 | NameNode的ID列表。 |
dfs.namenode.rpc-address.[nameservice ID].[name node ID] | 否 | 无 | NameNode的RPC地址,数量与NameNode数量相同。 |
dfs.client.failover.proxy.provider.[nameservice ID] | 否 | 无 | HDFS客户端连接活跃NameNode的Java类,通常是 |
基于OSS构建的Paimon
云数据库 SelectDB 版 3.0.6及其以上版本,支持以OSS作为数据来源进行Paimon对接。
CREATE CATALOG `paimon_oss_catalog` PROPERTIES (
"type" = "paimon",
"warehouse" = "oss://paimon-zd/paimonoss",
"oss.endpoint" = "oss-cn-beijing.aliyuncs.com",
"oss.access_key" = "ak",
"oss.secret_key" = "sk"
);
参数说明
参数 | 是否必选 | 默认值 | 说明 |
type | 是 | 无 | Catalog类型,固定为paimon。 |
warehouse | 是 | 无 | 仓库的OSS路径。 |
oss.endpoint | 是 | 无 | 访问OSS数据的 |
oss.access_key | 是 | 无 | 访问OSS数据的 |
oss.secret_key | 是 | 无 | 访问OSS数据的 |
基于Hive Metastore
如果您的Paimon元数据存储在Hive Metastore中,您可以创建同Hive相同的hms类型的Catalog进行集成Paimon,此处仅提供简单示例,具体操作,请参见Hive数据源。
CREATE CATALOG `paimon_hms` PROPERTIES (
"type" = "paimon",
"paimon.catalog.type" = "hms",
"warehouse" = "hdfs://HDFS8000871/user/zhangdong/paimon2",
"hive.metastore.uris" = "thrift://172.21.0.44:7004",
"dfs.nameservices" = "HDFS8000871",
"dfs.ha.namenodes.HDFS8000871" = "nn1,nn2",
"dfs.namenode.rpc-address.HDFS8000871.nn1" = "172.21.0.1:4007",
"dfs.namenode.rpc-address.HDFS8000871.nn2" = "172.21.0.2:4007",
"dfs.client.failover.proxy.provider.HDFS8000871" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
"hadoop.username" = "hadoop"
);
步骤三:查看Catalog
您可以通过以下语句,查看Catalog创建是否成功。
SHOW CATALOGS; --查看CATALOG是否创建成功
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| CatalogId | CatalogName | Type | IsCurrent | CreateTime | LastUpdateTime | Comment |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 436009309195 | paimon_catalog | paimon | | 2024-08-06 17:09:08.058 | 2024-07-19 18:04:37 | |
| 0 | internal | internal | yes | UNRECORDED | NULL | Doris internal catalog |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
步骤四:查看Paimon库表数据
在目标External Catalog目录下查看Paimon库表数据。
说明连接SelectDB实例后,默认操作目录为Internal Catalog。
切换目录至目标目录External Catalog。
SWITCH paimon_catalog;
查看数据。
完成目标目录切换后,您可以像使用Internal Catalog一样,对External Catalog的数据进行查看和访问。例如以下操作:
查看数据库列表:
SHOW DATABASES;
切换数据库:
USE test_db;
查看数据库表列表:
SHOW TABLES;
查看表数据:
SELECT * FROM test_t;
在Internal Catalog目录下查看Paimon库表数据。
--查看paimon_catalog目录下,数据库test_db中表test_t的数据。 SELECT * FROM iceberg_catalog.test_db.test_t;
列类型映射
以下部分复杂结构的数据类型支持嵌套使用。
Paimon Data Type:MapType、ArrayType
SelectDB Data Type:Map、Array
Paimon Data Type | SelectDB Data Type |
BooleanType | Boolean |
TinyIntType | TinyInt |
SmallIntType | SmallInt |
IntType | Int |
FloatType | Float |
BigIntType | BigInt |
DoubleType | Double |
VarCharType | VarChar |
CharType | Char |
DecimalType(precision, scale) | Decimal(precision, scale) |
TimestampType,LocalZonedTimestampType | DateTime |
DateType | Date |
MapType | Map |
ArrayType | Array |
VarBinaryType, BinaryType | Binary |