我想将一个带密钥的500GB表转储到HDF5中,然后检索与特定密钥匹配的行。
对于HDF5文件,所有数据访问等项都使用整数" row"数字,所以似乎我必须实现行号码映射"键。在HDF5之外。
使用像Hadoop或Spark这样使用HDFS的分布式系统,是否能更有效地检索?我应该使用分布式系统来实现map / hashfunction吗?
答案 0 :(得分:2)
是的,使用HDFS可以更高效 但是为了使其更有效,最好的情况可以是使用Hive而不是HDFS,因为Map reduce不提供按密钥分隔数据的任何默认方式。如果要按键分隔数据,则需要对其进行编码。
但是在Hive的情况下,您可以更有效地查询数据,因为hive为您提供了许多内置查询命令,例如ex - >按键,按值等分开 由于Hive使用的是Sql查询,因此也更容易使用。
有关查询HDFS的不同方式的更多详细信息,请参阅https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
希望这会回答你的问题。
答案 1 :(得分:1)
HDFS将数据保存在块中,然后,根据数据格式,查询将一次读取块并解析记录。 HDFS本身不会提供按键查找。
看看HBase。它会将数据存储在HDFS中并为您提供密钥 - >值界面查找行:https://hbase.apache.org/