FetchDistributedMapCache
描述:
从每一个输入的流文件的属性中计算出缓存的键, 然后从分布式缓存中取出与之相对应的值。如果不设置输出的属性, 那么输入的流文件的内容就会被替换成从分布式缓存中取出的二进制的值. 如果没有找到对应的键,那么流文件就会被路由到'not-found'连线. 注意,组件总是先把整个缓存的值写入到内存,然后再写入到目标位置,如果值很大的话,可能存在潜在的问题。
标签:
map, cache, fetch, distributed
参数:
如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 并且 参数还支持 表达式语言.
名字 | 默认值 | 允许值列表 | 描述 |
---|---|---|---|
缓存条目标识符 | ${hash.value} | 一个逗号分割的流文件属性集合,或者表达式的集合,用来标识不同的流文件对应不同的值; 它是这些缓存的值. 注意: 除非在属性中指定了"把缓存的值放到属性中",否则只允许一个缓存条目标识符. 仅当目标是多个属性时才支持多个缓存查找 (请查看这个属性的描述 '把缓存的值放到属性中' ). 支持表达式语言 (支持流属性和变量) | |
分布式缓存服务 | 控制器服务API: DistributedMapCacheClient 实现: HBase_1_1_2_ClientMapCacheService CouchbaseMapCacheClient DistributedMapCacheClientService RedisDistributedMapCacheClientService | 控制器服务用来获取缓存的值. | |
把缓存的值放到属性中 | 如果设置了,缓存的值将会被放入流文件的属性中,而不会放入流文件的内容. 属性的键决定了属性的值. 如果选择了多个缓存标识符对应一个属性,那么将使用此属性加点生成多个属性的方法来区分出多个缓存标识符对应的值。 支持表达式语言 (支持流属性和变量) | ||
属性值的最大长度 | 256 | 如果把缓存的值写入到流文件的属性中(通过设置"把缓存的值到属性中" 属性), 会被设置到属性值的最大字符的数量. 这一点很重要,因为属性保存在内存中,而较大的属性将很快导致内存不足. 如果输出比这个值长,则将截断它. 所以考虑设置尽可能的小. | |
字符编码 | UTF-8 | 指定缓存值的字符集编码。这仅在路由到属性时使用 |
连线:
名字 | 描述 |
---|---|
success | 如果成功了,将会被分配到这条线。 |
failure | 如果属性为空,或者无法和缓存进行交互,则会被分配到这条连线。 |
not-found | 如果属性没有在缓存中被找到, 将会被分配到这条连线。 |
读取属性:
未提供。
写入属性:
名字 | 描述 |
---|---|
user-defined | 只要 '把缓存的值放到属性中' 设置了,无论它设置的是什么 ,都将从分布式缓存服务里查找与之相对应的值放入流文件中.如果选择了多个缓存标识符对应一个属性,那么将使用此属性加点生成多个属性的方法来区分出多个缓存标识符对应的值. 例如,如果把缓存标识符设置为 'id,name', 而把用户定义的属性叫 'fetched', 那么将会写入到两个属性中, fetched.id 和 fetched.name, 分别包括他们期望的值. |
状态管理:
该组件不保存状态。
限制:
该组件没有限制
输入流要求:
组件必须提供输入流。
系统资源考量:
未提供。
参考:
DistributedMapCacheClientService, DistributedMapCacheServer, PutDistributedMapCache