Skip to content

Pandora Sender

Sun Jianbo edited this page Jun 20, 2017 · 32 revisions

Pandora 是七牛大数据团队开发的一站式大数据处理平台,Pandora Sender可以将结构化的数据发送到Pandora大数据平台。

典型配置

{
        "name":"req_io.pandora.sender",
        "sender_type":"pandora",
        "fault_tolerant":"false",
        "pandora_ak":"",  #可以直接填写ak,也可使用系统环境变量:"pandora_ak":"${YOUR_ENV_AK}"
        "pandora_sk":"", #可以直接填写sk,也可使用系统环境变量:"pandora_sk":"${YOUR_ENV_SK}"
        "pandora_host":"https://pipeline.qiniu.com",
        "pandora_repo_name":"repo_req_io",
        "pandora_region":"nb",
        "request_rate_limit":"100",
        "flow_rate_limit":"1024",
        "pandora_schema":"field1 pandora_field1,field2,field3 pandora_field3,...",
        "pandora_auto_create":"pandora_field1 *s,field2 l,pandora_field3 d,field4 f",
        "pandora_gzip":"false",
        "pandora_uuid":"false",
        "pandora_schema_free":"true",
        "pandora_schema_update_interval":"300"
}
  1. pandora_ak 必填,qiniu账号的ak.可以直接填写ak,也可使用"${YOUR\_ENV\_AK\_NAME}"从系统环境变量YOUR_ENV_AK_NAME中读取ak
  2. pandora_sk 必填,qiniu账号的sk.可以直接填写sk,也可使用"${YOUR\_ENV\_SK\_NAME}"从系统环境变量YOUR_ENV_SK_NAME中读取sk
  3. pandora_host 必填,pandora 服务地址
  4. pandora_repo_name 必填, pandora 的repo名字
  5. pandora_region 必填,pandora 服务的地域
  6. pandora_schema 可选字段,提供了schema的选项和别名功能,如果不填,则认为所有parser出来的field只要符合pandora schema就发送;如果填,可以只选择填了的字段打向pandora,根据逗号分隔,如果要以别名的方式打向pandora,加上空格跟上别名即可。若最后以逗号省略号",..."结尾则表示其他字段也以pandora的schema为准发送。Pandora Sender会在runner启动时获取repo的schema,若用户缺少一些必填的schema,会帮助填上默认值。
  7. pandora_schema_update_interval 可选字段,自动更新pandora schema的周期时间,单位为秒,默认300s
  8. request_rate_limit 可选字段,每秒请求数限制,默认不限速,注意填写的为数字字符串,如"500",表示每秒限制最多500个请求。注意,限速并发准确值,会有数值上的偏差,偏差范围在每秒20个请求以内。
  9. flow_rate_limit 可选字段, 每秒的流量限制,单位为KB,默认不限速,注意填写的为数字字符串,如"1024",表示限速每秒1024KB,注意,限速并发准确值,会有数值上的偏差,偏差范围在1KB以内。若单个batch的大小超过了流量限制,Logkit会将batch一拆为二。警告:若单个点的大小超过了流量限速的最大限制,logkit将发送不出该点,请根据单条日志大小谨慎配置。
  10. pandora_gzip 可选字段, 是否使用gzip压缩传输数据,默认不压缩。注意,压缩会占用CPU资源,但是会节省带宽,有利有弊,请根据业务情况选择。
  11. pandora_uuid 可选字段,是否在数据结果中自动生成Pandora_UUID字段,Pandora_UUID的生成规则采用RFC4122中描述的V4版本Random规则生成。padnora_uuid功能在数据中自动生成一个Pandora_UUID字段,该字段保证了发送出去的每一条数据都拥有一个唯一的UUID,可以用于数据去重等需要。
  12. pandora_schema_free 可选字段,默认为false,不启用,该字段表示在用户数据有新字段时就更新Pandora 数据源,添加字段,如果数据源不存在,创建数据源。即pandora_schema_free功能包含pandora_auto_create。启用该字段最大的好处是免除了数据更新导致Pandora数据源少收集或无法收集的困扰,使得用户可以从schema中解放出来,无需在意解析到的字段名称。特别适合logkit的入门用户,一开始可以使用pandora_schema_free功能,快速将数据发送到Pandora,然后调试parser,解析出新的字段。注意,目前自动更新的数据类型只支持string,float,long,bool,以及符合RFC3339格式的string作为date类型
  13. pandora_auto_create 可选字段,该字段表示字段创建,默认为空,不自动创建。若填写该字段,则表示自动创建。repo的DSL创建规则为<字段名称> <类型>,字段名称和类型用空格符隔开,不同自动用逗号隔开。若字段必填,则在类型前加*号表示。
    • pandora date类型:date,DATE,d,D
    • pandora long类型:long,LONG,l,L
    • pandora float类型: float,FLOAT,F,f
    • pandora string类型: string,STRING,S,s
    • pandora bool类型: bool,BOOL,B,b,boolean
    • pandora array类型: array,ARRAY,A,a;括号中跟具体array元素的类型,如a(l),表示array里面都是long。同时,也可以省略小括号前的array类型申明,直接写(l),表示 array类型,里面的元素是long
    • pandora map类型: map,MAP,M,m;使用花括号表示具体类型,表达map里面的元素,如map{a l,b map{c b,x s}}, 表示map结构体里包含a字段,类型是long,b字段又是一个map,里面包含c字段,类型是bool,还包含x字段,类型是string。同时,也可以省略花括号前面的map类型,直接写{s l},表示map类型,里面的元素s为long类型。

常见功能

  1. 自动创建Pandora数据源,通过pandora_auto_create字段创建。
  2. 自动添加Pandora数据字段,通过pandora_schema_free字段,可以自动更新Pandora的数据源,添加字段。
  3. 流量控制,通过request_rate_limit以及flow_rate_limit可以控制每秒的请求数以及每秒的请求数据量,若设置的batchsize过大导致流量限制,Logkit会自动将batch拆分。
  4. 压缩传输, 通过pandora_gzip配置,可以选择使用gzip压缩的方式传输数据,大大节约带宽。
  5. 字段选择与别名,通过pandora_schema可以选择要发送到Pandora的字段,同时可以将Parser出的字段名通过别名的方式与Pandora的名字进行一一对应。
  6. 类型转换,对于解析到的如stringlong等类型,会根据Pandora实际创建的数据源字段类型,进行一定的类型转换,可以进行类型转换的Pandora字段包括string(转换为字符串), long(转换为int64整型), float(转换为float64浮点型), date(转换为rfc3339格式的字符串时间表示),支持的转换为时间类型的数据包括:
    • 精确到微秒的整型(可以从数字、字符串中提取)
    • 2006/01/02 15:04:05,
    • 2006-01-02 15:04:05 -0700 MST,
    • 2006-01-02 15:04:05 -0700,
    • 2006-01-02 15:04:05,
    • 2006/01/02 15:04:05 -0700 MST,
    • 2006/01/02 15:04:05 -0700,
    • 2006-01-02 -0700 MST,
    • 2006-01-02 -0700,
    • 2006-01-02,
    • 2006/01/02 -0700 MST,
    • 2006/01/02 -0700,
    • 2006/01/02,
    • Mon Jan _2 15:04:05 2006 ANSIC,
    • Mon Jan _2 15:04:05 MST 2006 UnixDate,
    • Mon Jan 02 15:04:05 -0700 2006 RubyDate,
    • 02 Jan 06 15:04 MST RFC822,
    • 02 Jan 06 15:04 -0700 RFC822Z,
    • Monday, 02-Jan-06 15:04:05 MST RFC850,
    • Mon, 02 Jan 2006 15:04:05 MST RFC1123,
    • Mon, 02 Jan 2006 15:04:05 -0700 RFC1123Z,
    • 2006-01-02T15:04:05Z07:00 RFC3339,
    • 2006-01-02T15:04:05.999999999Z07:00 RFC3339Nano,
    • 3:04PM Kitchen,
    • Jan _2 15:04:05 Stamp,
    • Jan _2 15:04:05.000 StampMilli,
    • Jan _2 15:04:05.000000 StampMicro,
    • Jan _2 15:04:05.000000000 StampNano,
Clone this wiki locally