flume hive sink 用法详解

1.需求:

有这样一个需求。要从kafka采集数据然后写到hdfs上。要直接写为orc格式。直接给orc的表来用。

2.解决问题

  1) 我们首先想到用flume的 kafka source 和hdfs sink。但是事实是hdfs不能直接写为orc格式。除非自己再重新封装hdfs sink。  (这样就要开发了)。下面是官网的hdfs sink(1.9版本) 说只允许那几种压缩和SequenceFile格式。

2) 自己开发一个采集程序。就是定义一个kafka消费者。然后去kafka上消费数据。然后自己写orc格式的文件到hdfs上。当然上面两种都是比较好的。但是缺点就是要自己开发耗时长。

 

3)简单粗暴。直接使用hive-sink

3 hive-sink的用法

1)了解配置文件

#类型为hive
tier1.sinks.k1.type=hive
#hive的元数据地址
tier1.sinks.k1.hive.metastore = thrift://master:9083
#hive的数据库
tier1.sinks.k1.hive.database = default
#表名字
tier1.sinks.k1.hive.table = t_rsd_tornado_event
#采集的数据放在哪个分区下
tier1.sinks.k1.hive.partition = %Y,%m,%d
#滚动
tier1.sinks.k1.round = true
#滚动时间
tier1.sinks.k1.roundValue = 60
tier1.sinks.k1.roundUnit = minute
#序列化
tier1.sinks.k1.serializer = DELIMITED、
#这2个就不说了,
tier1.sinks.k1.serializer.delimiter = "\t"
tier1.sinks.k1.serializer.serdeSeparator = '\t'

#表的字段
tier1.sinks.k1.serializer.fieldnames =id,device_id,src_obj,dest_obj,src_ip,dest_ip,src_mac,dest_mac,protocol,app_layer_protocol,src_domain,dest_domain,ip_version,src_port,dest_port,packet_size,package_data,payload,sig_id,signame,match_point,match_data,action,incident_level,incident_time,risk_level,incident_type,active,last_update_time,last_update_user,create_time,creator,data_from
#批量提交到hive表的条数
tier1.sinks.k1.batchSize=10000

2) 对hive表的要求

a:表必须是事物表

b:表必须是分区表,分桶表

3)依赖的问题

缺少hive的一个依赖。

将这两个依赖导入flume的lib目录

4) 我这里用的是apache版本的flume没有用cdh版本的。cdh版本的错误更加多~~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值