如何自定义ETL?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

如何自定义ETL?

轩墨 2017-10-23 10:28:14 2393

日志服务提供流式的全托管数据加工服务,您可以配置一个ETL Job,日志服务将定时生成ETL Task并触发函数执行:增量消费日志服务logstore的数据,在函数里完成自定义加工任务。用于数据加工的函数可以是日志服务提供的标准函数模板或者用户自定义函数。

基本概念




Project


日志服务Project名字。

ETL Job


日志服务ETL Job名字,Job归属于Project,有如下配置:
配置项取值说明
logstore当前project下的logstore数据加工的输入源,该配置不允许修改
触发间隔60 ~ 600秒日志服务每隔一定时间计算一次logstore的shard信息,当发现有新日志写入时,生成的\<shard_id, begin_cursor,="" end_cursor\="" style="box-sizing: border-box;">三元组信息作为函数event的一部分触发函数执行
最大重试次数0 ~ 100次当函数执行异常失败时,日志服务会定时重试该任务
触发器日志logstore当前project下的logstore日志服务将调度函数的一些关键点日志记录到该logstore以备查询,可以看到函数运行失败、数据处理行数等信息
函数运行日志logstore在函数服务控制台设置Service的日志输出,函数实现内的logger信息会记录到该logstore,方便定位具体的异常,参考


ETL Task


根据Job配置,定期检查logstore下各shard数据写入情况,并在日志增量写入时为shard创建Task。
假设ETL Job触发间隔为60秒,logstore的shard一直有数据写入,那么每1分钟就会有一个ETL task创建出来执行

ETL Function


日志服务定时触发Task所要执行的函数(依托于函数服务),你可以选择使用:
  • 日志服务维护的函数模板
函数名函数说明
logstore_replicationlogstore间数据复制,README
ip_lookupip数据归属查找,README
  • 用户自定义函数

自定义函数由用户自行实现,函数需要的配置自行设计。
需要注意函数配置必须是一个JSON Object,空配置时请填写:
  1. [backcolor=transparent]{}

建议使用java8执行时函数,可以获得较好的数据处理效率。


使用指南



创建ETL Job


前往 函数服务控制台创建触发器,触发器类型为Log。

Job配置参考本文ETL Job一节,ETL Function配置(函数配置)参考具体的函数实现介绍页。

查看触发器日志


登录 日志服务控制台,为Job配置的触发器日志logstore创建索引,查看任务执行统计结果。

查看函数运行日志


登录 日志服务控制台,查看函数执行过程的详细信息, 参考

常见问题



创建触发器后长时间未触发函数执行

  1. 确认已经使用快捷授权为日志服务触发函数执行授权。
  2. 确认Job配置的logstore是否有数据增量修改,当shard数据有变化时会触发函数执行。
  3. 登录日志服务控制台查看触发器日志、函数运行日志查看是否有异常。


为什么函数异常终止


日志服务通过时间触发函数执行,一个函数需要处理较大的数据量,往往需要较大内存。可以尝试调大函数的内存规格再试,以验证是否OOM被kill。
云服务器登录 云服务器设置
分享到
取消 提交回答
全部回答(0)
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

相似问题
最新问题