分享

flume 向Hbase输入数据流,源数据如何映射成需要的Hbase的格式?

aaa201012 发表于 2013-10-16 13:39:40 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 14307
源测试文件的数据格式:
opcode1, col1:time2,24
opcode2, col2:time3,24
opcode1, col1:time1,25
opcode1, col1:time2,25
opcode2, col2:time3,25
其中:opcode1/opcode2对应hbase里的行键,col1/col2对应列族,time1/time2/time3对应列名,24/25对应具体的value。

flume的配置文件如下:
agent.sources = s1
agent.channels = c1
agent.sinks = k1
agent.sources.s1.type = exec
agent.sources.s1.command = tail -f /home/xltest/flumeForHbase.log
agent.sources.s1.channels = c1
  
agent.channels.c1.type = memory
agent.channels.c1.keep-alive = 10
agent.channels.c1.capacity = 100000
agent.channels.c1.transactionCapacity =100000
  
agent.sinks.k1.type = org.apache.flume.sink.hbase.HBaseSink
agent.sinks.k1.channel = c1
agent.sinks.k1.table = flumetest
agent.sinks.k1.columnFamily = col1
agent.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer

使用该配置文件,数据入Hbase之后,是这种格式:
hbase(main):050:0> scan 'flumetest'
ROW                                           COLUMN+CELL                                                                                                                        
1862084728184-WyPJrukpPQ-0                   column=col1:payload, timestamp=1373959739740, value=opcode2, col2:time3,22                                                         
1862084728203-WyPJrukpPQ-1                   column=col1:payload, timestamp=1373959739740, value=opcode1,col1:time1,23                                                         
1862084728203-WyPJrukpPQ-2                   column=col1:payload, timestamp=1373959739740, value=opcode1, col1:time2,23                                                         
1862084728203-WyPJrukpPQ-3                   column=col1:payload, timestamp=1373959739740, value=opcode2, col2:time3,23                                                         
1862084728203-WyPJrukpPQ-4                   column=col1:payload, timestamp=1373959739740, value=opcode1,col1:time1,24                                                         
1862084728204-WyPJrukpPQ-5                   column=col1:payload, timestamp=1373959739740, value=opcode1, col1:time2,24                                                         
1862084728204-WyPJrukpPQ-6                   column=col1:payload, timestamp=1373959739740, value=opcode2, col2:time3,24                                                         
1862084728204-WyPJrukpPQ-7                   column=col1:payload, timestamp=1373959739740, value=opcode1,col1:time1,25                                                         
1862084728204-WyPJrukpPQ-8                   column=col1:payload, timestamp=1373959739740, value=opcode1, col1:time2,25  

期望的数据格式是:
hbase(main):003:0> scan 'flumetest' ,{COLUMNS =>'col1:time1'}
ROW                                           COLUMN+CELL                                                                                                                        
opcode1                                      column=col1:time1, timestamp=1373959710160, value=100                                                                              
1 row(s) in 0.0140 seconds
求助:
flume应该如何配置,才能得到期望的数据格式?
              
               
               

已有(4)人评论

跳转到指定楼层
aaa201012 发表于 2013-10-16 13:40:31

            用的是flume1.3.0哈。
求助大侠!
回复

使用道具 举报

小小布衣 发表于 2014-8-28 18:34:38
hbase的配置文件只能精确到列族,想要他和自己的期望的一一对应,要自己写一个类实现
回复

使用道具 举报

semion 发表于 2014-12-11 22:02:23
可以使用正则匹配 我也遇到类似问题 http://www.tuicool.com/articles/32euYrM 你可以参考下,我是要把数据映射到elasticSearch 也需要将body的内容映射不同的字段 正在打算使用正则解决,我需要匹配json格式的正则(日志格式是json的字符串)坑啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条