全部产品
开放搜索

ODPS数据源配置

更新时间:2017-07-13 11:27:49   分享:   

开放数据处理服务(Open Data Processing Service, 简称ODPS)是一个开放的计算平台,如果您要导入到OpenSearch的数据是由ODPS平台计算而产生的,则可以直接配置ODPS源信息,系统会自动去获取数据。目前只支持全量

【需注意】ODPS内外网分离,即外网ODPS在内网区域使用会有问题,所以在使用上有很多注意事项,我们整理了接入流程,请移步OpenSearch对接ODPS(云梯2)流程

1. 入口有两个:
在应用基本配置-数据源中选择ODPS作为数据来源;
或者创建应用的时候直接配置ODPS源。详见通过ODPS创建应用。数据源-odps

2. 配置ODPS源信息

OpenSearch支持当前账号下的ODPS的project,或者已经授权给当前账号访问的project中获取数据。选择“ODPS”数据源后,选择“被授权的project”,输入odps中要访问的project信息进行连接校验(已成功连接的project系统会进行缓存,直接点击对应的project名称即可,无需重新连接)。

如果连接校验失败,则需要检查授权是否存在或授权最近有无变更过。(需注意ODPS表字段若没有权限或权限不对,也会报错。)配置odps源

配置字段映射关系:OpenSearch为ODPS源的数据提供了若干数据转换插件,如要使用,则在配置字段对应关系的同时,点击“内容转换”列中的“+”符号,则会在源字段被同步到OpenSearch之前,先进行内容转换,再进行同步。

如果内容转换插件由于配置错误、无法连接等错误失效,则源字段仍然会被同步到目标字段,只是内容不会被转换。

字段映射

【注意】对于ODPS表中的datetimetimestamp类型系统会自动转化为毫秒数,请将对应OpenSearch字段类型设置为INT。

3 .选择分区信息

3.1 根据ODPS数据特性,OpenSearch允许用户根据具体需要来指定导入的分区,高级版支持正则表达式,表示导入前一天的数据,结合应用基本信息-索引重建-定时索引重建功能,可以实现每天导入新分区数据的效果。

3.2 标准版只支持具体分区值的方式,如pt=20161010,不支持正则表达式,可以指定多个具体分区。(等号/逗号/分号/双竖线为系统保留字符,分区列名/列值中应避免出现这些字符):

【高级版应用每天自动导入前1天分区全量数据条件例子】 pt=%Y%m%d || -1 days    【注:pt为分区字段名】

分区字段

不同场景下odps分区条件用法,参考如下所示:

  • 1: 支持多个分区过滤规则,不同的分区过滤规则用分号分隔,如pt=1;pt=2将匹配满足分区字段pt=1或者pt=2的所有字段

  • 2: 分区过滤规则,支持指定多个分区字段的值,不同分区字段用逗号分隔,如:pt1=1,pt2=2,pt3=3 将匹配同时满足pt1=1,pt2=2,pt3=3的所有分区【分区中若存在多个字段,则多个字段都必须要指定,否者会报错】

  • 3: 分区字段的值支持通配符 *,表示该分区字段可以为任意的值,这种情况下,过滤规则中也可不写该字段

  • 4: 分区字段的值支持正则表达式,如pt=[0-9]* 将匹配pt值为数字的所有分区

  • 5: 分区字段的值支持时间匹配,匹配规则: pt=包含格式化时间的分区列值||时间间隔表达式。如ds=%Y%m%d || -1 days,表示分区字段为ds,格式为20150510,需要访问1天前的数据。

  • 5.1 格式化时间参数支持标准的时间格式参数,如下表

  • 5.2 时间间隔表达式支持 +/- n week|weeks|day|days|hour|hours|minute|minutes|second|seconds|microsecond|microseconds, +号任务创建时间的表示n周/天/小时/分钟/秒/毫秒后,-号表示任务创建时间的表示n周/天/小时/分钟/秒/毫秒前。

  • 5.3 系统默认会对所有过滤规则,按照+0 days进行时间参数替换,因此,需要注意的是,用于过滤的字段值不能包含下面这些字符串作为普通的字符串参数,如星期三创建的任务,pt=%abc 将匹配pt的值为Wedbc的分区,而不是pt=%abc的分区。

正则表达式全部可用参数及含义,参考如下:

  1. %a: 星期的简写。如 星期三为Wed
  2. %A: 星期的全写。如 星期三为Wednesday
  3. %b: 月份的简写。如4月份为Apr
  4. %B: 月份的全写。如4月份为April
  5. %c: 日期时间的字符串表示。(如: 04/07/10 10:43:39
  6. %d: 日在这个月中的天数(是这个月的第几天)
  7. %f: 微秒(范围[0,999999])
  8. %H: 小时(24小时制,[0, 23])
  9. %I: 小时(12小时制,[0, 11])
  10. %j: 日在年中的天数 [001,366](是当年的第几天)
  11. %m: 月份([01,12])
  12. %M: 分钟([00,59])
  13. %p: AM或者PM
  14. %S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
  15. %U: 周在当年的周数当年的第几周),星期天作为周的第一天
  16. %w: 今天在这周的天数,范围为[0, 6],6表示星期天
  17. %W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
  18. %x: 日期字符串(如:04/07/10
  19. %X: 时间字符串(如:10:43:39
  20. %y: 2个数字表示的年份
  21. %Y: 4个数字表示的年份
  22. %z: utc时间的间隔 (如果是本地时间,返回空字符串)

4 . 选择数据同步并发控制机制(目前仅“内网杭州”区域可见)

当用户勾选【使用done文件】后,OpenSearch支持用户通过上传done文件的方式控制系统拉取全量数据的时机,保证全量数据的完整性。系统在开始从odps拉全量数据之前会先判断一下当天的done文件是否存在,如果不存在则等待,默认等待1小时后超时。

  • 用户需从odps官网下载odps clt安装包
  • 用户需要具有所在project空间的CreateResource权限;
  • 安装后在用户程序中运行如下命令:其中done文件的命名规则为$prefix_%Y-%m-%d。$prefix: 文件名前缀,默认为表名,%Y-%m-%d:索引重建任务日期,系统定时任务目前支持的最小粒度为1天。
    1. odpscmd u accessid p accesskey --project=<prj_name> e "add file <done file>;"
  • done文件内容为json格式,目前仅需包含如下内容,用于指定该批全量数据的时间戳(毫秒)【最多只保留3天增量,因此该时间点不可以超过3天】。

  • 该时间戳表示需要回溯的增量数据时间点,如果不配置则默认从索引重建任务开始时间追加数据【最多只保留3天增量,因此该时间点不可以超过3天】。

  • 【例如】全量数据是今天9点的,odps处理完毕后为10点,OpenSearch定时任务为10:30,则done文件需要指定为当天9点的毫秒值,在处理完全量后系统会追加当天9点后的增量,保证数据完整性;否则会从默认任务启动时间10:30开始追加,这样9:00~10:30期间的增量会丢失,该行为非常重要,需要特别注意。(当然,若没有增量,则无需配置该时间戳)

  • 高级版done文件内容如下所示(提示:标准版中需设置的数据时间值也是类似原理,都是用来追期间增量的)

  1. {
  2. "timestamp":"1234567890000"
  3. }
本文导读目录
本文导读目录
以上内容是否对您有帮助?