在 HDFS 中存储 protobuf 编码数据的首选方式是什么?目前我看到两种可能的解决方案:
a) 序列文件:存储序列化/编码的二进制数据,即序列文件对应值中的“byte[]”。
b) Parquet:Parquet 提供 protobuf/Parquet 转换器。因此,我的假设是,在使用这些转换器时,二进制数据首先必须反序列化为对象表示,然后必须将该对象传递给 protobuf/Parquet 转换器以将其存储在 Parquet 中。我认为与解决方案 a) 相比,这样做会导致更高的性能成本。由于我必须处理大量的小型 protobuf 编码数据块(由 Kafka 提供的流式车辆数据),因此性能和内存成本是重要的方面。
c) 还有其他选择吗?
总结一下:我正在寻找一种解决方案,将许多小型 protobuf 编码数据块(即车辆传感器数据)存储在 HDFS 中,从而尽可能地保留原始数据。但是,必须确保之后可以使用 Map/Reduce 或 Spark 处理数据。
最好的,托马斯