HDF5相对于数据存储,用于数据检索的效率如何?

5
我想将一个大小为500GB的键值表转储到HDF5中,然后检索与特定键匹配的行。
对于HDF5文件,像所有数据访问一样,使用整数“行”号,因此似乎我必须在HDF5之外实现一个“键到行号映射”。
使用像Hadoop或Spark这样的分布式系统更有效地检索,这些系统使用HDFS。我应该使用分布式系统来实现映射/哈希函数吗?
2个回答

3
使用HDFS可能更加高效,但是为了使其更加高效,最好使用Hive在HDFS上操作,因为Map reduce并没有默认的方法来按照键分离数据。如果你想要按照键分离数据,你需要对其进行编码。
但是在Hive的情况下,你可以更加有效地查询数据,因为Hive提供了很多内置查询命令,如将数据按照键、值分离等。由于Hive使用Sql查询,使用起来更加容易。
如果你想要了解更多关于不同查询HDFS的方式,请参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 希望这能够回答你的问题。

我们在什么情况下使用mapreduce而不是仅访问键值对?为什么HIVE比HDF5更高效? - ShanZhengYang

1
HDFS会将数据存储在块中,然后根据数据格式,查询将一次性读取块并解析记录。HDFS本身不提供按键查找。请看HBase。它将在HDFS中存储数据,并为您提供键值接口以查找行:https://hbase.apache.org/

谢谢。你可以给我一些了解,HDF5在这种情况下性能会有多差吗?如果有合适的索引,它只是一个巨大的字典,对吗? - ShanZhengYang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接