我的Java应用程序使用实时数据,然后发布到S3上的ORC文件
问题在于,在我们处理所有记录之前,我们不知道文件的架构,而不是第一条记录
例如:
因为这是一个实时应用程序,所以我不希望处理所有消息以计算出架构,因为这样会很慢
是否可以在处理数据时添加到架构中?
我已经看过Java示例here,但我看不出方法
Parquet会在这里变得更好吗?
答案 0 :(得分:1)
我认为您可能正在尝试将圆钉固定在方孔中。听起来您正在摄取具有未知模式的事件流,并且希望将其存储为针对已知模式进行优化的格式。
我想您可以在跟踪模式的同时缓冲一定数量的事件(例如1百万个事件),一旦达到该数量,便清除到文件,然后再次开始缓冲。缺点是每个文件都将具有不同的架构,这使得处理多个文件中的数据变得不切实际。
另一种解决方案是研究无模式数据存储,尽管您无法获得与S3上的ORC或Parquet一样的价格性能优势。
还有其他策略,但是长远解决方案的最佳选择是与管理您正在摄取的事件源的任何人进行交谈,并找到预先确定架构的方法。