更新时间:2025-08-01 GMT+08:00

配置ClickHouse对接OBS源文件

操作场景

OBS(对象存储服务)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,兼容S3(Simple Storage Service)协议,用户可以在MRS ClickHouse集群中通过S3表函数或S3表引擎轻松读取和写入OBS中的数据。

本章节将主要介绍如何使用ClickHouse对OBS文件系统中的数据文件进行读写操作。

前提条件

已将ClickHouse需要读取的表数据文件上传至OBS文件系统,具体请参考创建并行文件系统

使用S3表函数对接OBS

  1. 获取OBS文件路径。

    登录OBS服务管理控制台,在左侧导航栏单击“并行文件系统”,在“并行文件系统”页面单击对应的文件系统名称,在“文件”页面单击文件名称,获取前提条件上传的数据文件详细路径。
    图1 文件路径

  2. 安装ClickHouse客户端。

    详细操作请参考安装MRS客户端

  3. 使用ClickHouse客户端连接到ClickHouse服务端,具体请参考ClickHouse客户端使用实践
  4. 执行以下命令获取OBS内的存储数据。

    select * from S3(path, [ak, sk,] format, structure, [compression])
    表1 参数解释

    参数

    说明

    path

    OBS文件路径,获取方法请参考1

    ak/sk

    参数可选,具备访问OBS权限的AK/SK,获取方法请参考如何获取访问密钥AK/SK

    format

    数据文件格式。常见的格式包括 CSV, Parquet, ORC, JSON 等。

    structure

    数据文件的结构,通常是一个表格的列名和数据类型。

    例如,structure 可以是一个字符串,描述了列名和数据类型,如 column1 INT, column2 STRING, column3 DATE。

    compression

    参数可选,数据文件的压缩方式,例如 gzip, snappy, bzip2 等。

使用S3表引擎对接OBS

  1. 安装ClickHouse客户端。

    详细操作请参考安装MRS客户端

  2. 使用ClickHouse客户端连接到ClickHouse服务端,具体请参考ClickHouse客户端使用实践
  3. 执行以下命令创建表。

    CREATE TABLE test1_s3 ('name' String, 'age' int)
    ENGINE = S3(path, [ak, sk,] format, [compression])

    表2 参数解释

    参数

    说明

    test1_s3

    创建的表名称。

    path

    OBS文件路径,获取方法请参考1

    ak, sk

    参数可选,具备访问OBS权限的AK/SK,获取方法请参考如何获取访问密钥AK/SK

    format

    数据文件的格式。常见的格式包括 CSV, Parquet, ORC, JSON 等。

    compression

    参数可选,数据文件的压缩方式,例如 gzip, snappy, bzip2 等。

  4. 执行以下命令查询表。

    select * from test1_s3;