【发布时间】:2019-08-16 22:20:02
【问题描述】:
我们正在一个项目中解码以文本文件形式传输给我们的实时消息文件。该文件是一个非结构化文本,但我们有一个规范来解码它。有不同的主题,每个主题每小时至少收到 800 个消息文件,平均文件大小为 1 KB。要求是在所有文件到达时实时解码所有文件,并将解码后的数据以结构化形式存储在数据库中,这些数据必须被拉到前端应用程序中。收到文件后,出现在前端的 ETA 不到一分钟。
这是我正在考虑的建议数据流:-
Message Files(.txt) --> 解码 --> 存储在 DB --> Web App
有人可以告诉我您对以下问题的回答吗?
- 我可以使用任何流媒体工具/技术来实时处理消息文件吗?
- 是否可以使用像 Cloudera 这样的 Big Data Stack 来实时处理这些文件?由于每个文件的大小为1KB,在HDFS中会不会影响Name node的存储和性能?我指的是小文件大数据问题
- 如果我不能使用大数据,有没有我能想到的替代处理策略来实现这个 ETA?
【问题讨论】:
-
您好@AngiSen 我对您的项目有一些疑问:1)您希望在收到每个文件后应用什么样的流程?在开始处理之前拥有完整的文件内容是先决条件还是可以按行完成?您的环境已经在使用哪些数据库/存储系统?
-
您好 Alex,1) 我想使用规范解码每个文件并从中生成属性我无法逐行读取它们,因为它们是非结构化文本并且必须处理文件作为一个整体。此外,在某些情况下,我必须拼接多个文件(页面)以使它们成为一个文件并将其发送以进行进一步解码。 2)我现在没有任何数据库,但是一旦我解码每个文件,我会得到一个结构化的模式来将它存储在一些数据库中,比如 SQL Server 或 Hive。
-
OK @Angi,如果我理解得很好,你有 2 种文件类型 FT1: big files 和 FT2: chunks of text 你想要的第二个在应用某种处理后转换为 FT1。对吗?
-
是的。即使将它们拼接在一起,我的文件大小也没有超过 1 MB。我想对这两个文件应用相同类型的解码处理。唯一的问题是对于某些文件,我必须阅读它们并确定它是否还有其他页面,然后等到收到文件的所有页面来缝合它们。对于某些人来说,这是直接的,因为它们只是一页文件。
标签: apache-spark hdfs bigdata cloudera real-time-data