
# 配置ClickHouse对接OBS源文件
#### 操作场景
在大数据分析场景中，OBS作为海量数据的存储底座，ClickHouse需要直接读取OBS上的数据文件进行分析处理，避免数据搬迁带来的时间成本和存储冗余。当您需要在ClickHouse中查询存储在OBS上的数据文件，或将ClickHouse查询结果写入OBS时，可通过S3协议实现ClickHouse与OBS的对接。
ClickHouse通过兼容S3协议访问OBS中的数据文件。ClickHouse提供了两种对接OBS的方式：
- **S3表函数**：在SQL查询中通过S3()函数直接引用OBS文件路径，无需预先创建表结构。适用于临时查询、数据探索等场景，每次查询时直接访问OBS文件，不持久化元数据。
- **S3表引擎**：通过CREATE TABLE语句将OBS文件映射为ClickHouse的持久化表，表结构定义保存在ClickHouse中。适用于需要频繁访问同一OBS路径的场景，后续查询可直接引用表名，无需重复指定文件路径和格式。
两种方式的核心区别如下：
| 对比项    | S3表函数          | S3表引擎               |
|:---|:---|:---|
| 使用方式   | 在SELECT语句中直接调用 | 需先CREATE TABLE再查询   |
| 元数据持久化 | 否，每次查询需指定完整参数  | 是，表结构保存在ClickHouse中 |
| 适用场景   | 临时查询、数据探索      | 频繁访问、定期查询           |
| 查询便捷性  | 每次需输入完整路径和格式   | 直接使用表名查询            |
   
 #### 前提条件
已将ClickHouse需要读取的表数据文件上传至OBS文件系统，具体请参考[创建并行文件系统](https://support.huaweicloud.com/usermanual-obs/obs_13_0002.html)。
已安装ClickHouse客户端，例如客户端安装目录为"/opt/client"。详细操作请参考[安装MRS客户端](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2127.html)。
#### 使用S3表函数对接OBS
1. 获取OBS文件路径。
   
   登录OBS服务管理控制台，在左侧导航栏单击"并行文件系统"，在"并行文件系统"页面单击对应的文件系统名称，在"文件"页面单击文件名称，获取[前提条件]上传的数据文件详细路径。
   图1文件路径   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002267343104.png "点击放大")
   
   
2. 使用ClickHouse客户端连接到ClickHouse服务端，具体请参考[ClickHouse客户端使用实践](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2345.html)。
3. 执行以下命令获取OBS内的存储数据。 
   ```
   select * from S3(path, [ak, sk,] format, structure, [compression])
   ```
   表1参数解释 
   | 参数          | 说明                                                                                                                                 |
   |:---|:---|
   | path        | OBS文件路径，获取方法请参考[1]。                                                                                 |
   | ak/sk       | 参数可选，具备访问OBS权限的AK/SK，获取方法请参考[如何获取访问密钥AK/SK](https://support.huaweicloud.com/iam_faq/iam_01_0618.html)。                             |
   | format      | 数据文件格式。常见的格式包括 CSV, Parquet, ORC, JSON 等。                                                                                          |
   | structure   | 数据文件的结构，通常是一个表格的列名和数据类型。 例如，structure 可以是一个字符串，描述了列名和数据类型，如 column1 INT, column2 STRING, column3 DATE。 |
   | compression | 参数可选，数据文件的压缩方式，例如 gzip, snappy, bzip2 等。                                                                                           |
      
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724746937.png "点击放大")
   
   
 
#### 使用S3表引擎对接OBS
1. 使用ClickHouse客户端连接到ClickHouse服务端，具体请参考[ClickHouse客户端使用实践](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2345.html)。
2. 执行以下命令创建表。 
   ```
   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](https://support.huaweicloud.com/iam_faq/iam_01_0618.html)。 |
   | format      | 数据文件的格式。常见的格式包括 CSV, Parquet, ORC, JSON 等。                                                             |
   | compression | 参数可选，数据文件的压缩方式，例如 gzip, snappy, bzip2 等。                                                               |
      
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724746941.png "点击放大")
   
   
3. 执行以下命令查询表。 
   ```
   select * from test1_s3;
   ```
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676907454.png "点击放大")
   
   
 
#### 相关文档
- 使用ClickHouse客户端连接服务端，具体请参考[ClickHouse客户端使用实践](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2345.html)。
- OBS并行文件系统的创建和使用方法，具体请参考[创建并行文件系统](https://support.huaweicloud.com/usermanual-obs/obs_13_0002.html)。
- 创建ClickHouse表请参考[CREATE TABLE创建表](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24201.html)。
 
