火山引擎大数据研发治理套件 DataLeap 中的 Python 任务,支持通过使用第三方依赖包,访问 ByteHouse 云数仓版引擎数据,实现高效的数据处理,为数据全流程自动化处理提供灵活方案。本文将为您介绍在 DataLeap 上,通过 Python 任务调用方式,对 ByteHouse 云数仓版中的数据进行访问。
Python 任务连接 ByteHouse 集群时,需要获取 ByteHouse 集群的 host、password 等连接信息。
说明
Python 任务若通过 ByteHouse 集群的公网域名进行连接访问数据库时,您需确保独享计算资源组绑定的私有网络已开通公网访问能力。详见资源组 VPC 开通公网。
Python 任务连接 ByteHouse 集群时,需获取连接时使用的用户名和密码(API Key)信息。其中:
ByteHouse 集群的连接初始化时,会采用默认的集群计算组相关信息,因此这些值不能为空。
您可在租户管理 > 参数设置中设置默认参数:
任务完成新建后,进入 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 参数删除,不指定数据库的情况下,将会使用默认连接的数据库。详见连接默认参数设置。 |
脚本配置完成后,您可进行以下操作,完成任务执行资源配置:
说明
您也可以根据实际场景,进行自定义镜像,镜像打包流程详见推送和拉取镜像,基础镜像请选择 dataleap-cn-beijing.cr.volces.com/studio/runtime_light:online,其中地域信息:cn-beijing,可根据实际区域情况进行修改。
在选取独享计算资源组设置后,网络配置中会默认将独享计算资源组绑定的私有网络、子网、安全组信息填入,且不可修改。
您可在创建独享计算资源组时,配置对应的私有网络信息,需和 ByteHouse CDW 集群中的网络配置信息保持一致,便于网络互通。详见1 使用前提说明。
产出数据登记用于记录任务的数据血缘,不会对代码逻辑造成影响。如果当前 Python 任务中含有对应引擎库表数据的产出时,强烈建议填写,以便后续维护任务数据血缘关系。此示例选择默认。
任务配置完成后,依次单击上方操作栏中保存和调试图标按钮,执行编辑好的 Python 命令,执行成功后,可在界面下方查看运行日志。
结果验证确认无误后,您可进行后续的调度设置和将任务提交发布到运维中心离线任务运维中执行。
后续任务运维操作详见:离线任务运维。