Flink 在线学习训练任务的配置如下。
1. Hologres配置
配置项  | 备注  | 示例  | 
endpoint  | 格式:host:port。  | hgpostcn-cn-xxxx-cn-beijing-vpc.hologres.aliyuncs.com:80  | 
dbname  | hologres数据库名称。  | db_name  | 
tablename  | 存储模型参数的holo的表名。  | rec.contextual_bandit_models  | 
username  | hologres的用户名。  | ${holo_user_name}  | 
password  | hologres的密码。  | ${holo_password}  | 
insertOrUpdate  | 数据插入模式:是否覆盖。  | true  | 
hologres.feature.table  | 存储特征的hologres表名。  | rec.contextual_bandit_features  | 
hologres.arm.table  | 存储后续arm的hologres表名。  | rec.cold_start_item_table  | 
2. 算法配置
配置项  | 备注  | 示例  | 
log.parser.parallelism  | 日志解析的worker并行度。  | 4  | 
parallelism  | 算法并行度。  | 4  | 
linucb.algo  | linucb算法类型,disjoint or hybrid。  | hybrid  | 
browse.window.size  | 曝光事件等待其他事件的时间,单位:分钟。  | 8  | 
default.window.size  | 其他事件在内存中等待的时间,单位:分钟。  | 5  | 
new.arm.duration.hours  | arm的生命周期,单位:小时。  | 24  | 
new.arm.cache.minutes  | 新arm在内存中cache的时间,单位:分钟。  | 1  | 
arm.id.column.name  | arm的ID在表  中的列名。  | videoId  | 
arm.create.time.column.name  | arm的创建时间在表  中的列名。  | createTime  | 
arm.create.time.column.type  | arm的创建时间的格式,后文有详细介绍。  | timestamp  | 
备注:配置项log.parser.parallelism,vvp(UI界面)上设置的并发度不能低于该值,尽量保持一致;并且该值一般不大于data source的并发(datahub或kafka的分片数)。
3. 数据源配置
3.1 kafka
备注:要求kafka的输入为json string,标准的JSON格式对象,格式为{Key:Value, Key:Value,...}。
配置项  | 备注  | 示例  | 
kafka.bootstrap.servers  | kafka server ips。  | 172.0.XX.XX:9092,172.0.XX.XX:9092  | 
kafka.topic  | kafka topic。  | item_bhv_log  | 
kafka.group.id  | kafka group ID。  | realtime_rec  | 
input.user.field.path  | 用户ID的   | $.userid  | 
input.arm.field.path  | arm的   | $.value.svid  | 
input.event.type.field.path  | 事件类型的   | $.event_name  | 
input.event.time.field.path  | 事件时间的   | $.gmt  | 
input.event.time.format  | 事件时间的格式, 详见下文。  | "yyyy-MM-dd HH:mm:ss.SSS"  | 
input.event.reward.json  | 事件的reward,JSON格式。  | {"exposure":0,"svplay":0.5,"svplayend":1,"share":2,"likes":1.5}  | 
input.exposure.event.name  | 曝光事件的名称。  | exposure  | 
input.event.equal.filter  | 日志满足等式条件时才保留,{"key": "value"}。  | {"from_page":"p_smartvideodetail"}  | 
input.event.in.filter  | 日志满足集合条件时才保留,{"key": [...]}。  | {"refer":["p_weexpage", "p_svhome", "p_svh_tab_0"]}  | 
备注:不在配置项input.event.reward.json中配置reward的事件将会被过滤掉;曝光事件的reward建议设置为0。
备注:json path表示在JSON中的path,以$开头。更多path信息,请参见LanguageManual UDF。不同字符的含义如下:
$:表示根节点。
.或['']:表示子节点。MaxCompute支持用这两种字符解析JSON对象,当JSON的Key本身包含.时,可以用['']来替代。[]:[number]表示数组下标,从0开始。
:Wildcard for [],返回整个数组。不支持转义。
示例:假设某条日志的内容为
{
    "store": {
        "fruit": [
            {
                "weight": 8,
                "type": "apple"
            },
            {
                "weight": 9,
                "type": "pear"
            }
        ],
        "bicycle": {
            "price": 19.95,
            "color": "red"
        }
    },
    "email": "a***@example.net",
    "owner": "a**"
}JSON path  | value  | 
$.owner  | a**  | 
$.store.bicycle.price  | 19.95  | 
$.store.fruit[0]  | {"weight":8,"type":"apple"}  | 
$.store.fruit[0].type  | apple  | 
3.2 datahub
配置项  | 备注  | 示例  | 
datahub.endpoint  | 数据总线endpoint。  | http://dh-cn-beijing-int-vpc.aliyuncs.com  | 
datahub.project  | 数据总线项目名。  | xxx_rec  | 
datahub.topic  | 数据总线topic。  | item_bhv_log  | 
datahub.sub.id  | 数据总线订阅ID。  | 16255766364793VNMA  | 
datahub.access.id  | 用户名。  | |
datahub.access.key  | 密码。  | |
datahub.start.in.ms  | 日志数据的开始消费时间戳(单位毫秒)。  | 默认值:Job启动的时间  | 
input.user.field.path  | 用户ID的   | userid  | 
input.arm.field.path  | arm的   | value.svid  | 
input.event.type.field.path  | 事件类型的   | event_name  | 
input.event.time.field.path  | 事件时间的   | gmt  | 
input.event.time.format  | 事件时间的格式,详见下文。  | "yyyy-MM-dd HH:mm:ss.SSS"  | 
input.event.reward.json  | 事件的reward,JSON格式。  | {"exposure":0,"svplay":0.5,"svplayend":1,"share":2,"likes":1.5}  | 
input.exposure.event.name  | 曝光事件的名称。  | exposure  | 
input.event.equal.filter  | 日志满足等式条件时才保留,{"key": "value"}。  | {"from_page":"p_smartvideodetail"}  | 
input.event.in.filter  | 日志满足集合条件时才保留,{"key": [...]}。  | {"refer":["p_weexpage", "p_svhome", "p_svh_tab_0"]}  | 
备注:不在配置项input.event.reward.json中配置reward的事件会被过滤掉;曝光事件的reward建议设置为0。
3.3 Value Path
单值字段:column_name
JSON字段:column_name.path
path表示JSON值的路径,其中:
. 表示子节点
[] 表示数组下标,数据格式为:
key[sub1][sub2][sub3]......
示例: 假设某datahub有一 column value,其值为
{
    "svd_tab": "recommend",
    "publish_uid": 964655287,
    "totaltime": 8219,
    "exp_id": "ER4_L6#EG8****",
    "refer": ["weexpage", "html5"],
    "alogr_name": {
      "name": "U2IRecallV10",
      "type": "linucb"
    },
    "svid": "5480249",
    "n_svid": "5505132",
    "playtime": 572,
    "n_alogr_name": "SwingU2IRecallV10",
    "request_id": "03cabe99-e46c-43bf-b689-5c6b9ab083fa"
}value.svid可取到值 "5480249"。value.alogr_name.name可取到值 "U2IRecallV10"。value.refer[1]可取到值 "html5"。
3.4 Time Format
配置项  | 说明  | 
timestamp  | 整型,时间戳,单位:秒。  | 
timestamp.in.millisecond  | 整型,时间戳,单位:毫秒。  | 
java SimpleDateFormat  | 字符串,2021-09-14 19:18:37.971 -> "yyyy-MM-dd HH:mm:ss.SSS"。  |