背景说明
云数据仓库 PostgreSQL 常见使用场景是将消息中间件的信息同步到云数据仓库 PostgreSQL 后再进行分析。本文提供了一种便捷的方法,即使用 SCF 实时的将 Kafka 中的数据导入到云数据仓库 PostgreSQL,无需用户维护任何服务。
注意事项
该云函数目前只能将腾讯云 CKafka 作为数据源,暂不支持自建 Kafka。
该云函数目前只能将云数据仓库 PostgreSQL 中的某一张表作为目标数据写入,如果有多张表的需求,请按照以下流程每张表创建对应的云函数。
使用步骤
步骤一:创建函数
1. 登录 云函数控制台,选择左侧导航中的函数服务。
2. 在函数服务页面,单击新建。
3. 在新建页面模糊搜索中搜索关键词“ckafka数据加载到CDW”,设置完成后单击下一步。
4. 进入函数配置页面后,配置参数请参见 创建函数,其中环境配置和网络配置,配置参数如下:
环境配置
内存:根据实际运行情况来设置,默认为128MB。当导入过程中出现内存不足的问题时,需调大内存。
环境变量:
参数 | 必填 | 说明 |
DB_DATABASE | 是 | 数据库名 |
DB_HOST | 是 | 如果函数是私有网络,并且和云数据仓库 PostgreSQL 是在同一子网,则可以填写云数据仓库 PostgreSQL 的内网 IP,否则需要填写外网 IP,并配置白名单 |
DB_USER | 是 | 用户名 |
DB_PASSWORD | 是 | 用户密码 |
DB_SCHEMA | 是 | 模式名,如果创建表的时候未指定,通常是 public |
DB_TABLE | 是 | 表名 |
DB_PORT | 否 | 云数据仓库 PostgreSQL 端口,默认为5436 |
MSG_SEPARATOR_ASCII | 否 | CKafka 中数据分隔符的 ASCII 码,默认为39(逗号),由于逗号经常会出现在业务数据中,这里建议使用11(Vertical tab) |
MSG_NULL | 否 | CKafka 中消费的 NULL 值,默认是 \\N |
REPLACE_0X00 | 否 | 是否替换字符串中的0x00,默认是0(1表示替换) |
ENABLE_DEBUG | 否 | 是否打印错误的记录,默认是0(1表示打印) |
ENABLE_COS | 否 | 是否把未写入记录转储到 COS 上,默认是0(1表示转储) |
COS_SECRET_ID | 否 | 访问 COS 的 secret_id,ENABLE_COS 如果为1,该字段必填 |
COS_SECRET_KEY | 否 | 访问 COS 的 secret_key,ENABLE_COS 如果为1,该字段必填 |
COS_BUCKET | 否 | COS 存储桶名称,ENABLE_COS 如果为1,该字段必填 |
STATMENT_TIMEOUT | 否 | 查询超时时间,默认是50秒 |
网络配置
私有网络:建议启用私有网络,并将 VPC 和子网的值配置的与云数据仓库 PostgreSQL 相同。
下图为云数据仓库 PostgreSQL 对应的值。
公网访问:建议同时启用公网访问。
5. 单击完成。
步骤二:配置触发器
1. 登录 云函数控制台,选择左侧导航中的函数服务。
2. 在函数服务页面,选择函数名,进入函数详情页面。
3. 选择左侧导航中的触发管理,单击创建触发器。
4. 在创建触发器页面,将触发方式设置为“Ckafka 触发”,如下图所示:
5. 单击提交。