flume-1.7.0将源码修改为按文件读取数据
来源:互联网 发布:ubuntu引导没有win10 编辑:程序博客网 时间:2024/06/06 03:41
flume-1.7.0在配置source的时候,默认是按行读取,每行的数据作为一个事件,发送到channel。但是有时候,我们需要整个文件作为flume发送的一个事件。如果监控文件目录下的文件,这个时候就需要按文件读取,但是flume并没有提供按文件读取的配置。
如果想要实现相应的功能就需要修改源码。我只写简要的过程,并将修改以后的jar包上传上来。其中的过程不做详细说明,期间的步骤不复杂,不懂的地方可以直接去网上搜索。
在这里,我只修改了读取行的方法的地方,源文件中的类和方法的名字,都没有做修改。
1.下载flume1.7.0源码.
2.将其导入idea或eclipse.
3.编辑flume-ng-core项目的源码。更改org.apache.flume.serialization包下面的LineDeserializer类。
4.需要更改的地方是:
//原来的值是2048,因为我们的文件大小在3-10k,最大的文件是30k左右,所以更改为100k的大小。自己需要多大可以自己去调整。public static final int MAXLINE_DFLT = 102400;//更改readLine方法private String readLine() throws IOException { StringBuilder sb = new StringBuilder(); int c; int readChars = 0; while ((c = in.readChar()) != -1) { readChars++; sb.append((char)c); if (readChars >= maxLineLength) { logger.warn("Line length exceeds max ({}), truncating line!", maxLineLength); break; } } if (readChars > 0) { return sb.toString(); } else { return null; }}
原来的时候每遇到“\n”就会发送一个事件,现在是读完一个文件才发送一个事件。
其余的所有东西都不需要更改。
5.在flume-ng-core项目的pom文件中的项目g-a-v(项目坐标)的位置加上 <packaging>jar</packaging>
因为,我们只需要编译这一个项目就可以了。源码中的pom文件是没有打包方式的,所以需要添加。
6.打开cmd,进入flume-ng-core的目录,使用mvn package命令即可。为了方便,可以直接跳过测试。
7.用新生成的jar包替换集群上flume安装目录下面的lib文件夹中的相对应的jar包即可。重新启动flume。就可以正常使用了。
阅读全文
0 0
- flume-1.7.0将源码修改为按文件读取数据
- 【Flume】flume ng中HDFS sink设置按天滚动,0点滚动文件,修改源码实现
- C++ 按行读取文件并按空格将数据存储为vector
- 将文件读取为NSData
- flume 读取kafka 数据
- python将文件读取为字符串
- c#读取csv文件成DataTable,将DataTable数据存储为csv格式文件
- live555Server读取文件修改为socket接收数据遇到的问题
- flume+kafka读取日志文件
- Flume 将数据导入Hive
- Flume将数据导入Hbase
- 将数据存储到文件中和读取
- Flume-ng将数据插入hbase-0.96.0
- Flume-ng将数据插入hdfs与HBase-0.96.0
- Flume-1.6.0修改
- IDL读取grib数据为tiff文件
- 将datagridview数据导出为excel文件
- 将数据导出为EXCEL文件
- linux 上安装mysql
- moveit双臂机器人程序
- 室内地图开发
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- Fortran001—— 输入输出和声明
- flume-1.7.0将源码修改为按文件读取数据
- sql优化和索引
- selenium测试环境搭建
- 浮点数加法
- Unity3D-技能CD效果制作
- 探索“双十一”支付背后的金融科技
- java POI 学习第一篇 【创建工作簿,sheet页,单元格】
- 替换空格
- VBA 程序加密破解