全部产品
云市场

函数计算作为DataHub后端服务

更新时间:2017-10-15 11:08:11

1. 创建函数计算Function

1.1 新建Service

在函数计算控制台中创建Service。去往函数计算控制台。如果您已经创建过Function,可以忽略此步。

create_service

1.2 新建Function

在刚创建的Service下创建Function,点击“新建函数”。并输入您的代码,详细操作请参照创建函数。触发器页面点击”跳过””即可,最后点击完成。

create_function

2. 配置跨服务授权Role

授权DataHub访问函数计算 授权链接

3. 创建DataHub Topic

参见web控制台操作指南

4. 创建DataHub FunctionCompute Connector

4.1 进入Topic详情页

topic_detail

4.2 选择创建FC Connector

choose_fc

4.3 填写配置信息

config_fc

  • 地址: 函数计算服务地址,需填写内网服务地址,格式为 https://<account_id>.fc.<region>.aliyuncs.com,例如,上海区域函数计算的地址为:https://12423423992.fc.cn-shanghai-internal.aliyuncs.com。可参考函数计算服务入口
  • 服务名: 目标函数计算的服务名
  • 函数名: 目标函数计算的函数名
  • 每次最大条数: 每次请求函数计算的最大记录条数
  • 启动点位: 表示从DataHub的topic中哪个位置的记录开始调用函数计算,OLDEST(从topic中最老的记录),LATEST(从topic中最新的记录),SYSTEM_TIME(从topic中该时间的记录开始)

5. Event结构定义

发送到函数计算的数据遵循以下数据结构定义:

  1. {
  2. "eventSource": "acs:datahub",
  3. "eventName": "acs:datahub:putRecord",
  4. "eventSourceARN": "/projects/test_project_name/topics/test_topic_name",
  5. "region": "cn-hangzhou",
  6. "records": [
  7. {
  8. "eventId": "0:12345",
  9. "systemTime": 1463000123000,
  10. "data": "[\"col1's value\",\"col2's value\"]"
  11. },
  12. {
  13. "eventId": "0:12346",
  14. "systemTime": 1463000156000,
  15. "data": "[\"col1's value\",\"col2's value\"]"
  16. }
  17. ]
  18. }

其中:

  • eventSource: 事件来源,此处为常字符串acs:datahub;
  • eventName: 事件名称,来自datahub的数据名称为acs:datahub:putRecord;
  • eventSourceARN: 事件来源标识,包含datahub的project和topic名称,如 /projects/test_project_name/topics/test_topic_name;
  • region: 事件来源DataHub所属的区域,cn-hangzhou;
  • records: 事件包含的记录列表
    • eventId: 记录的ID,组成方式为,shardId:SequenceNumber;
    • systemTime: 该event存入DataHub的毫秒时间戳;
    • data: 事件的数据内容,Tuple类型Topic该字段为列表,其中每个元素均为string类型的数据对应每个topic中每个字段的值; Blob类型Topic该字段为string;

6. 注意事项

  • 服务域名需为内部服务域名,函数计算服务名、函数名需存在;
  • DataHub仅支持同步模式Invoke函数,保证数据处理顺序;
  • 每次最大条数,DataHub从用户的shard中读取的最大数据的条数,并使用读到的数据调用函数计算。当读到的数据量小于该数值时,任务会延时1s之后继续读取;当读到的数据条数等于该数值时,会立刻进行下一次读取和调用过程;
  • 当函数发生运行时错误时,DataHub会在1s之后进行重试,失败次数达到512时,任务将被挂起;
  • 可在web控制台查看任务运行状态以及点位,详细出错信息等;