ORC 或 Parquet 格式的灵活架构?
Flexible schema possible with ORC or Parquet format?
我的 Java 应用程序使用实时数据,然后发布到 S3 上的 ORC 文件
问题是因为在处理所有记录之前我们不知道文件的架构,而不是第一个记录
例如:
- 消息 1 具有属性 A 和 B
- 消息 2 具有属性 A、B 和 C
- 消息 3 具有属性 A 和 C
因为这是一个实时应用程序,所以我不希望处理所有消息来计算架构,因为那样会很慢
是否可以在我们处理数据时添加到架构中?
我看过 Java 示例 here,但我没有找到方法
Parquet 在这里会更好吗?
我认为您可能想在方孔中安装圆钉。听起来您正在摄取具有未知架构的事件流,并且您希望以针对已知架构优化的格式存储它。
我想您可以在跟踪模式的同时缓冲一定数量的事件(比如 100 万个事件),然后在达到该数量后清除到文件并再次开始缓冲。缺点是每个文件最终都会有不同的模式,这使得跨多个文件处理数据变得不切实际。
一种不同的解决方案是研究无模式数据存储,尽管您无法获得与 S3 上的 ORC 或 Parquet 相同的性价比优势。
还有其他策略,但长期解决方案的最佳选择是与管理您正在摄取的事件源的任何人交谈,并找到一种方法来预先确定架构。
我的 Java 应用程序使用实时数据,然后发布到 S3 上的 ORC 文件
问题是因为在处理所有记录之前我们不知道文件的架构,而不是第一个记录
例如:
- 消息 1 具有属性 A 和 B
- 消息 2 具有属性 A、B 和 C
- 消息 3 具有属性 A 和 C
因为这是一个实时应用程序,所以我不希望处理所有消息来计算架构,因为那样会很慢
是否可以在我们处理数据时添加到架构中?
我看过 Java 示例 here,但我没有找到方法
Parquet 在这里会更好吗?
我认为您可能想在方孔中安装圆钉。听起来您正在摄取具有未知架构的事件流,并且您希望以针对已知架构优化的格式存储它。
我想您可以在跟踪模式的同时缓冲一定数量的事件(比如 100 万个事件),然后在达到该数量后清除到文件并再次开始缓冲。缺点是每个文件最终都会有不同的模式,这使得跨多个文件处理数据变得不切实际。
一种不同的解决方案是研究无模式数据存储,尽管您无法获得与 S3 上的 ORC 或 Parquet 相同的性价比优势。
还有其他策略,但长期解决方案的最佳选择是与管理您正在摄取的事件源的任何人交谈,并找到一种方法来预先确定架构。