有可能用键值将数据存储在 HDFS 中吗?
there is a possibility to store data in HDFS with key-value?
在NoSQL 数据库中存储数据可以提供键值存储模型。然而,HDFS 是 Hadoop 生态系统中的一种分布式文件存储。 key-value 由 mapreduce 集群使用。因此,此分布仅在处理阶段生成。
我需要知道是否有可能将静态数据存储在 HDFS 中,其中每个值都由一个键标识。
Hadoop 从早期就支持 SequenceFiles(如果不是从一开始就支持)https://wiki.apache.org/hadoop/SequenceFile。
这些仅在 map/reduce 场景中有用,今天您可能希望使用一种柱状格式(parquet 或 orc)来存储您的数据,您也可以降级为仅保存一个键和一个值,也可以与每个键的多个值一起使用(它们还保存元数据,使您能够在扫描时跳过数据(例如 parquet 过滤器下推 https://drill.apache.org/docs/parquet-filter-pushdown/)
请注意,所有这些格式都不会为您提供在线查询功能(如 No-SQL 数据库),因为您需要一个 no-sql 数据库 - 如果您想要一个存储其数据的数据库在 HDFS 上有 HBase(顺便说一下,它使用的 HFile 格式也是一种存储在 HDFS 上的键-多值格式)
在NoSQL 数据库中存储数据可以提供键值存储模型。然而,HDFS 是 Hadoop 生态系统中的一种分布式文件存储。 key-value 由 mapreduce 集群使用。因此,此分布仅在处理阶段生成。
我需要知道是否有可能将静态数据存储在 HDFS 中,其中每个值都由一个键标识。
Hadoop 从早期就支持 SequenceFiles(如果不是从一开始就支持)https://wiki.apache.org/hadoop/SequenceFile。
这些仅在 map/reduce 场景中有用,今天您可能希望使用一种柱状格式(parquet 或 orc)来存储您的数据,您也可以降级为仅保存一个键和一个值,也可以与每个键的多个值一起使用(它们还保存元数据,使您能够在扫描时跳过数据(例如 parquet 过滤器下推 https://drill.apache.org/docs/parquet-filter-pushdown/)
请注意,所有这些格式都不会为您提供在线查询功能(如 No-SQL 数据库),因为您需要一个 no-sql 数据库 - 如果您想要一个存储其数据的数据库在 HDFS 上有 HBase(顺便说一下,它使用的 HFile 格式也是一种存储在 HDFS 上的键-多值格式)