分享

Flume按文件的方式导入hdfs的问题

wks3000 发表于 2015-3-10 18:21:44
上传到HDFS的文件后面都有个时间戳,  这个时间戳能去掉吗,如果能,怎么去掉。
回复

使用道具 举报

xuanxufeng 发表于 2015-3-10 19:24:44
wks3000 发表于 2015-3-10 18:21
上传到HDFS的文件后面都有个时间戳,  这个时间戳能去掉吗,如果能,怎么去掉。

为什么想去掉时间戳,处于什么需求
回复

使用道具 举报

howtodown 发表于 2015-3-10 19:28:25
wks3000 发表于 2015-3-10 18:21
上传到HDFS的文件后面都有个时间戳,  这个时间戳能去掉吗,如果能,怎么去掉。

时间戳?被上传文件里??这个没有的,参考这个,把配置贴里面,文件是什么内容,上传后就是什么内容
让你快速认识flume及安装和使用flume1.5传输数据(日志)到hadoop2.2
回复

使用道具 举报

wks3000 发表于 2015-3-10 23:31:00
howtodown 发表于 2015-3-10 19:28
时间戳?被上传文件里??这个没有的,参考这个,把配置贴里面,文件是什么内容,上传后就是什么内容
让 ...

你的上传结果里也是带时间戳的,/aboutyunlog/FlumeData.1401681667750

能把.1401681667750去掉吗, 或者改变其形式,比如变成yyyy-MM-dd HH:mm:ss格式
回复

使用道具 举报

howtodown 发表于 2015-3-11 18:00:51
wks3000 发表于 2015-3-10 23:31
你的上传结果里也是带时间戳的,/aboutyunlog/FlumeData.1401681667750

能把.1401681667750去掉吗,  ...

你是说的文件名吧。改一下下面参数试试:
a1.sinks.k1.hdfs.filePrefix = logFile.%Y-%m-%d
a1.sinks.k1.hdfs.fileSuffix = .log

回复

使用道具 举报

想ai抽 发表于 2015-4-19 09:42:36
wjhdtx 发表于 2014-10-30 18:25
借楼主宝地问个问题:
-------------------------------------------------------
我的需求是这样:

跟您遇到同样的需求,但是看官网文档对于spooldir的介绍貌似需要把log1从log 目录先copy到spooldir里面,然后flume的spooldir source才会开始行动,而且针对的spooldir里的log文件都是immutable的。
问题:
如果每次都要把生成的日志放到spooldir里面去,与直接用shell或者HDFS Api直接copy到HDFS有啥区别? —— 不省事,感觉更多事,还要加上flume;

您最终的结果就是在这个帖子上最后发的那个?
回复

使用道具 举报

想ai抽 发表于 2015-4-19 10:12:43
wjhdtx 发表于 2014-11-4 17:50
问题解决了,虚拟机环境上传2G的日志没问题,先这样了,分享下最后的配置文件:

注意到你貌似的做了一些自定义开发,是这样吗?我们的日志当天都不会加日期,想找FileNameFilter类似的东西没有找到,看来我也得自己搞一个了。对吧?
回复

使用道具 举报

langke93 发表于 2015-4-19 16:00:12
想ai抽 发表于 2015-4-19 09:42
跟您遇到同样的需求,但是看官网文档对于spooldir的介绍貌似需要把log1从log 目录先copy到spooldir里面, ...

好处是实时性。就是一个工具,当然自己可以写一个
回复

使用道具 举报

想ai抽 发表于 2015-4-19 19:12:48
langke93 发表于 2015-4-19 16:00
好处是实时性。就是一个工具,当然自己可以写一个

以这个需求来说,这个spooldir本身就是反实时性的东西。
回复

使用道具 举报

想ai抽 发表于 2015-4-20 14:38:27
howtodown 发表于 2015-3-11 18:00
你是说的文件名吧。改一下下面参数试试:
a1.sinks.k1.hdfs.filePrefix = logFile.%Y-%m-%d
a1.sinks.k ...

看源码是在fileSuffix之前加上的,不知道这个问题解决了没有?【本人也在纠结要不要自己重新写实现】如有更和平的方式,敬请指教
HDFSEventSink ——》 process():


String realPath = BucketPath.escapeString(filePath, event.getHeaders(),
            timeZone, needRounding, roundUnit, roundValue, useLocalTime);
        String realName = BucketPath.escapeString(fileName, event.getHeaders(),
          timeZone, needRounding, roundUnit, roundValue, useLocalTime);




回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条