在Flume NG中使用HBaseSink时,我可以自定义行键模式吗?

在Flume NG中使用HBaseSink时,我可以自定义行键模式吗?,hbase,flume,Hbase,Flume,我正在尝试使用Flume NG将文本文件中的日志收集到HBase。日志文件中的每一行都是JSON文本,我将它们作为值插入HBase表中。问题是我不知道如何定制行键模式。例如,当我计算表中的行数时: hbase(main):001:0> count 'flume-ng-test', 100000 Current count: 100000, row: default32e473e0-4f54-48b5-8081-c3f845b38456 Current count: 200

我正在尝试使用Flume NG将文本文件中的日志收集到HBase。日志文件中的每一行都是JSON文本,我将它们作为值插入HBase表中。问题是我不知道如何定制行键模式。例如,当我计算表中的行数时:

hbase(main):001:0> count 'flume-ng-test', 100000
Current count: 100000, row: default32e473e0-4f54-48b5-8081-c3f845b38456         
Current count: 200000, row: default65b0cc3d-5421-4bb1-87e2-b21c2841fcd6         
Current count: 300000, row: default98be85e3-bb9f-402e-8f36-0db74cb8ab44         
Current count: 400000, row: defaultcbf888dc-e2bb-492f-ab17-63f5e0327344         
Current count: 500000, row: defaultfedc40e5-04b4-49a4-8734-655f43956d6e         
502224 row(s) in 8.1540 seconds
行键是
default+UUID\u like\u string
。如果我想使用当前时间戳(升序或降序)更改行键模式,我应该怎么做


感谢您的评论。

在flume ng的HBase接收器中,
HbaseEventSerializer
实现负责生成行键。默认实现
org.apache.flume.sink.hbase.SimpleHbaseEventSerializer
已经支持以
前缀+当前时间戳
的格式生成时间戳行键,使用它只需相应地修改flume配置

hbase-agent.sinks.sink1.type = org.apache.flume.sink.hbase.HBaseSink
hbase-agent.sinks.sink1.channel = ch1
hbase-agent.sinks.sink1.table = demo
hbase-agent.sinks.sink1.columnFamily = cf
hbase-agent.sinks.sink1.serializer = org.apache.flume.sink.hbase.SimpleHbaseEventSerializer
hbase-agent.sinks.sink1.serializer.payloadColumn = col1
hbase-agent.sinks.sink1.serializer.keyType = timestamp
如果提供的基于时间戳的密钥生成方法与您的要求不同,则需要为flume提供自定义的
HbaseEventSerializer
实现,这将要求您:

  • 创建自己的行键生成器类(默认类为
    org.apache.flume.sink.hbase.SimpleRowKeyGenerator
  • 创建自己的
    HbaseEventSerializer
    接口实现(默认实现为
    org.apache.flume.sink.hbase.SimpleHbaseEventSerializer
    ),该接口将使用您在第一步中创建的自定义行键生成器
  • 修改flume hbase接收器配置,以使用自定义的
    HbaseEventSerializer
    实现

  • 在flume ng的HBase接收器中,
    HbaseEventSerializer
    实现负责生成行键。默认实现
    org.apache.flume.sink.hbase.SimpleHbaseEventSerializer
    已经支持以
    前缀+当前时间戳
    的格式生成时间戳行键,使用它只需相应地修改flume配置

    hbase-agent.sinks.sink1.type = org.apache.flume.sink.hbase.HBaseSink
    hbase-agent.sinks.sink1.channel = ch1
    hbase-agent.sinks.sink1.table = demo
    hbase-agent.sinks.sink1.columnFamily = cf
    hbase-agent.sinks.sink1.serializer = org.apache.flume.sink.hbase.SimpleHbaseEventSerializer
    hbase-agent.sinks.sink1.serializer.payloadColumn = col1
    hbase-agent.sinks.sink1.serializer.keyType = timestamp
    
    如果提供的基于时间戳的密钥生成方法与您的要求不同,则需要为flume提供自定义的
    HbaseEventSerializer
    实现,这将要求您:

  • 创建自己的行键生成器类(默认类为
    org.apache.flume.sink.hbase.SimpleRowKeyGenerator
  • 创建自己的
    HbaseEventSerializer
    接口实现(默认实现为
    org.apache.flume.sink.hbase.SimpleHbaseEventSerializer
    ),该接口将使用您在第一步中创建的自定义行键生成器
  • 修改flume hbase接收器配置,以使用自定义的
    HbaseEventSerializer
    实现