使用flume将event写入hbase:
flume中的Hbase Sink将数据写入Hbase中,Hbase配置是从classpath中遇到的第一个hbase-site.xml中获取的。
这里做一个简单的例程
首先在hbase中创建表(下面建表语句从简),
create_namespace 'mydb'
create 'mydb:user','info'
在1.conf中进行简单的设置
agent1.sources=s1
agent1.channels = c2
agent1.sinks = hbaseSink-2
#设置基本参数
agent1.sources.s1.type=netcat
agent1.sources.s1.bind=localhost
agent1.sources.s1.port=5678
agent1.sources.s1.channels=c2
agent1.channels.c2.type=memory
#指定hbase参数
agent1.sinks.hbaseSink-2.type = hbase
agent1.sinks.hbaseSink-2.table =mydb_user
agent1.sinks.hbaseSink-2.columnFamily =info
#以下正则根据自己的需求设置正则表达式 以下正则为[xxx] [xxx] [xxx] [xxx]格式
agent1.sinks.hbaseSink-2.serializer= org.apache.flume.sink.hbase.RegexHbaseEventSerializer
a2.sinks.hbaseSink-2.serializer.regex = \\[(.*?)\\]\\ \\[(.*?)\\]\\ \\[(.*?)\\]\\ \\[(.*?)\\]
#指定列名
a2.sinks.hbaseSink-2.serializer.colNames = user_id,user_name,user_age,col4
a2.sinks.hbaseSink-2.channel = c2
#启动flume
flume-ng agent --name agent1 -f 1.conf
#netcat监听端口,端口为设置端口
nc localhost 5678
在运行中如果遇到如下错误:
错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty
可以对flume-ng脚本进行修改
在java.library,path 后加上 2>/dev/null | grep hbase ,如上图所示。
–参考资料
针对上述问题,还有其他方法,可以参考下面的博客,方法比较全:
https://blog.csdn.net/hq86937375/article/details/87787086
有问题欢迎留言,大家共同进步!
.csdn.net/hq86937375/article/details/87787086>
有问题欢迎留言,大家共同进步!