0

FlumeNGを使用してテキストファイルのログを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_like_stringです。現在のタイムスタンプ(昇順または降順)を使用して行のキーパターンを変更したい場合は、どうすればよいですか?

コメントありがとうございます。

4

1 に答える 1

5

flume-ngのHBaseシンクでは、HbaseEventSerializer実装が行キーの生成を担当します。デフォルトの実装org.apache.flume.sink.hbase.SimpleHbaseEventSerializerは、フォーマットでのタイムスタンプ行キーの生成をすでにサポートしていますprefix + current timestamp。これを使用するには、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

提供されたタイムスタンプベースのキー生成メソッドが目的の方法ではない場合は、HbaseEventSerializerflumeにカスタム実装を提供する必要があります。これには、次のことが必要になります。

  1. 独自の行キージェネレータークラスを作成します(デフォルトはorg.apache.flume.sink.hbase.SimpleRowKeyGenerator
  2. 最初のステップで作成したカスタム行キージェネレーターを使用するインターフェイスの独自の実装を作成しますHbaseEventSerializer(デフォルトの実装は)org.apache.flume.sink.hbase.SimpleHbaseEventSerializer
  3. HbaseEventSerializerカスタム実装を使用するようにflumehbaseシンク構成を変更します。
于 2012-09-23T12:14:49.600 に答える