You need to enable JavaScript to run this app.
导航
Python 任务访问 ByteHouse CDW
最近更新时间:2025.04.29 11:41:34首次发布时间:2025.04.29 11:41:34
我的收藏
有用
有用
无用
无用

火山引擎大数据研发治理套件 DataLeap 中的 Python 任务,支持通过使用第三方依赖包,访问 ByteHouse 云数仓版引擎数据,实现高效的数据处理,为数据全流程自动化处理提供灵活方案。本文将为您介绍在 DataLeap 上,通过 Python 任务调用方式,对 ByteHouse 云数仓版中的数据进行访问。

1 使用限制

DataLeap 产品服务版本若仅开通 Dataleap 大数据集成服务,不支持创建 Python 任务。详见DataLeap 公有云版本功能差异

2 使用前提

  1. 服务开通:
    1. 开通 DataLeap 服务并创建相应的 DataLeap 项目。详见DataLeap 服务开通
    2. 已开通 ByteHouse 云数仓版服务。详见快速开始
  2. 子账号登录操作时,需具备对应服务的使用权限。DataLeap 权限管理详见 权限介绍;ByteHouse 权限管理详见 权限管控
  3. Python 任务访问私有网络服务或资源时,需通过独享计算资源组访问,且独享计算资源组使用的私有网络、子网、安全组信息,需和 ByteHouse 集群中的网络配置信息保持一致,便于网络互通。并将创建的独享计算资源组绑定到 DataLeap 项目控制台中进行使用。绑定操作详见4.3 配置服务绑定信息
    Image

3 ByteHouse 连接信息获取

Python 任务连接 ByteHouse 集群时,需要获取 ByteHouse 集群的 host、password 等连接信息。

3.1 Host 地址获取

  1. 登录 ByteHouse 集群控制台
  2. 租户管理 > 基本信息 > 网络信息处,获取私网域名或公网域名地址信息。若还未创建网络信息,可参考 设置网络信息 进行创建。

说明

Python 任务若通过 ByteHouse 集群的公网域名进行连接访问数据库时,您需确保独享计算资源组绑定的私有网络已开通公网访问能力。详见资源组 VPC 开通公网

Image

3.2 API Key 获取

Python 任务连接 ByteHouse 集群时,需获取连接时使用的用户名和密码(API Key)信息。其中:

  • 用户名信息,统一为 bytehouse;
  • API Key 信息,可在租户管理 > 连接信息处,获取 API Key 信息。API Key 操作详见 获取 API Key

Image

3.3 连接默认参数设置

ByteHouse 集群的连接初始化时,会采用默认的集群计算组相关信息,因此这些值不能为空。
您可在租户管理 > 参数设置中设置默认参数:

  • 默认计算组:用来处理SQL的默认计算资源。
  • 默认写计算组:用于将数据写入数据库底层存储的默认计算资源。
  • 数据库:设置默认连接数据库。

Image

4 配置 Python 任务

  1. 登录 DataLeap租户控制台
  2. 进入具体的数据开发项目,在任务开发界面,进行新建 Python 任务。详见Python

Image

4.1 配置脚本

任务完成新建后,进入 Python 任务编辑界面,进行以下脚本编辑:

import os
#安装 clickhouse-driver 第三方依赖包
os.system('pip3 install clickhouse-driver') 

from clickhouse_driver import Client
from datetime import datetime

# Connect to ByteHouse
client = Client(
    host="tenant-test.bytehouse.ivolces.com",
    port=19000,
    user="bytehouse",
    password="api_Key_test",
    database="DataBase_Name",
    secure=True,
    verify=False,
)

# Create Table
create_table_query = """
CREATE TABLE IF NOT EXISTS demo_python_table2 (
    id Int32,
    name String,
    created_at DateTime
)
ENGINE = CnchMergeTree()
ORDER BY id;
"""
client.execute(create_table_query)

# Insert Data
data = [
    (1, 'Alice', datetime(2024, 11, 20, 10, 30, 0)),
    (2, 'Bob', datetime(2024, 11, 20, 11, 0, 0)),
    (3, 'Charlie', datetime(2024, 11, 20, 12, 15, 0)),
]
client.execute("INSERT INTO demo_python_table2 (id, name, created_at) VALUES", data)

# Query Data
rows = client.execute("SELECT * FROM demo_python_table2")
print(rows)

替换参数说明:

参数

说明

host

替换成 ByteHouse 连接信息中的 host 地址。详见2.1 Host 地址获取

password

替换 ByteHouse 集群中已创建的 API Key 信息。详见2.2 API Key 获取

database

替换实际业务场景中 ByteHouse 库名信息。

说明

您也可以将 database 参数删除,不指定数据库的情况下,将会使用默认连接的数据库。详见连接默认参数设置

4.2 执行设置

脚本配置完成后,您可进行以下操作,完成任务执行资源配置:

  1. 单击进入右侧侧边栏执行设置窗口。
  2. 选择计算资源组:下拉选择已绑定的独享计算资源组名称。
  3. 镜像地址:可为空,不填写。

    说明

    您也可以根据实际场景,进行自定义镜像,镜像打包流程详见推送和拉取镜像,基础镜像请选择 dataleap-cn-beijing.cr.volces.com/studio/runtime_light:online,其中地域信息:cn-beijing,可根据实际区域情况进行修改。

  4. 资源配置:资源可根据实际需求进行配置,以 CU 为单位,默认配置 1CU(1CU = 1Core 4GB),下拉可选择更高规格的资源配置。
  5. 资源选择:按需使用。若任务中需依赖额外的 JAR、File 等资源包时,可在此进行选择。资源上传操作详见资源库

4.3 网络设置

在选取独享计算资源组设置后,网络配置中会默认将独享计算资源组绑定的私有网络、子网、安全组信息填入,且不可修改。
您可在创建独享计算资源组时,配置对应的私有网络信息,需和 ByteHouse CDW 集群中的网络配置信息保持一致,便于网络互通。详见1 使用前提说明。

4.4 任务产出设置

产出数据登记用于记录任务的数据血缘,不会对代码逻辑造成影响。如果当前 Python 任务中含有对应引擎库表数据的产出时,强烈建议填写,以便后续维护任务数据血缘关系。此示例选择默认。

5 保存运行任务

任务配置完成后,依次单击上方操作栏中保存调试图标按钮,执行编辑好的 Python 命令,执行成功后,可在界面下方查看运行日志。
Image

6 结果验证

  1. 登录 ByteHouse 集群控制台
  2. 在对应 ByteHouse CDW 数据库下的表中,查看写入数据是否符合预期。

Image

7 提交任务

结果验证确认无误后,您可进行后续的调度设置和将任务提交发布到运维中心离线任务运维中执行。

  1. 调度设置:
    在右侧导航栏中,进入调度设置界面,您可以在此设置调度资源组、调度属性、依赖关系等信息,详细参数设置详见调度设置
  2. 提交发布:
    单击操作栏中的保存提交上线按钮,在弹窗中,需先通过提交上线流程,最后单击确认按钮,完成作业提交。详见5.1 离线任务提交

后续任务运维操作详见:离线任务运维