代码之家  ›  专栏  ›  技术社区  ›  DJ180

或者是灵活的拼花地板?

  •  1
  • DJ180  · 技术社区  · 6 年前

    我的Java应用程序使用实时数据,然后发布到S3上的ORC文件中

    问题是,因为我们在处理所有记录之前不知道文件的模式,而不是第一条记录

    例如:

    • 消息1具有属性A&B
    • 消息2具有属性A、B和;C
    • 消息3具有属性A&C

    因为这是一个实时应用程序,所以我不希望处理所有消息来计算模式,因为那样会非常慢

    在我们处理数据时,是否可以添加到模式中?

    我已经看了Java示例 here 但我没办法

    这里的拼花地板会更好吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jens Roland    6 年前

    我想你可能是想把圆钉子塞进一个方孔里。听起来好像您正在接收一个具有未知模式的事件流,并且希望将其存储为针对已知模式进行优化的格式。

    我想您可以在跟踪模式的同时缓冲一定数量的事件(比如,100万个事件),然后在达到该数量后清除到一个文件,然后再次开始缓冲。缺点是每个文件都会以不同的模式结束,这使得跨多个文件处理数据变得不切实际。

    另一种解决方案是研究无模式的数据存储,尽管在S3上使用ORC或Parquet并不能获得相同的性价比优势。

    还有其他策略,但你最好的长期解决方案是与管理你摄入的事件来源的人交谈,并找到一种预先确定模式的方法。