Flume 1.6 遇Emoji表情发生截断丢失数据问题分析
来源:互联网 发布:淘客cms微信系统 编辑:程序博客网 时间:2024/06/05 14:47
问题描述
最近有一段时间,跑ETL的时候,发现出来的数据明显比之前少,少了大约一半左右,就开始排查。
我们的数据是从Flume采集过来的,排查日志发现,flume在读取到某一条的时候,就不再往下读取了。
问题分析
进一步拿到原始文件后,找到那条数据。用vim打开发现其中有个地方有两个空格。起初以为是乱码(之前flume出过乱码中断的问题),贴到ide里面,得到具体编码为\uD83D\uDD1E\uD83D\uDCAA,发现是四字节的utf-8编码。贴到Google一看,原来是Emoji表情。
跟踪flume源码发现,在spooling directory source中,只支持3个字节以内的utf-8。而遇到这种4字节的utf-8将发生截断,并且会解读为EOF,即结束标志。换句话说,当前文件中,这个表情后面的数据全部不再读取了,也不会发生报错情况。
解决办法
翻了下flume官方的issues,果然有这个问题:“Flume agent fails to parse files with emoji when the source type is spooldir”,地址:https://issues.apache.org/jira/browse/FLUME-2828。但是处于OPEN状态,未解决。
继续翻发现,“ResettableFileInputStream can’t support ucs-4 character”,地址是:https://issues.apache.org/jira/browse/FLUME-2215,这个bug有点关联,仔细看了下,确实能够解决。
新版本flume(1.7)已经修复该问题,考虑到当前flume并没有进行复杂的业务逻辑操作,故直接升级版本。
- Flume 1.6 遇Emoji表情发生截断丢失数据问题分析
- Flume 丢失数据问题
- 长短信发送Emoji 图标被截断的问题分析
- emoji表情问题
- Emoji表情
- 表情Emoji
- Emoji 表情
- mysql 解决 emoji 表情存储问题-note
- MySQL无法存储Emoji表情问题
- mysql保存emoji表情问题-java
- MySQL无法存储Emoji表情问题
- emoji表情中不能插文字问题
- iOS 过滤输入Emoji表情的问题
- 解决 emoji 表情的存储问题。
- 文本输入带有Emoji表情问题
- iOS中UITextField的字数限制 emoji被截断问题
- redis数据丢失问题的分析
- Java Base64 加密解密 (数据加密或解决手机Emoji表情被数据库过滤掉的问题)
- Fix for Debug Assertion Failed! Expression: __acrt_first_block == header
- 【Video】音视频领域知识
- Codeforces 699 C. Vacations ( 贪心
- 292. Nim Game
- 用户层加载驱动 卸载驱动源码
- Flume 1.6 遇Emoji表情发生截断丢失数据问题分析
- 开源项目Meizhi学习笔记--工具类的收集
- 任意数据长度的bitset,以及按位读写数据的函数
- 像写文章一样使用 Kotlin
- c++ 字符串分割函数stringsplit
- 235. Lowest Common Ancestor of a Binary Search Tree
- 文件名匹配查找
- SSH免密登录
- LRU Cache -- Lintcode 134