【发布时间】:2016-11-11 22:18:25
【问题描述】:
我想将一个带键的 500GB 表转储到 HDF5 中,然后检索与特定键匹配的行。
对于 HDF5 文件,像所有数据访问这样的项目都使用整数“行”号,所以似乎我必须在 HDF5 之外实现“行号映射键”。
使用 HDFS 的分布式系统(如 Hadoop 或 Spark)不是更高效吗?我应该使用分布式系统来实现地图/哈希函数吗?
【问题讨论】:
标签: hadoop apache-spark hdfs hdf5 bigdata
我想将一个带键的 500GB 表转储到 HDF5 中,然后检索与特定键匹配的行。
对于 HDF5 文件,像所有数据访问这样的项目都使用整数“行”号,所以似乎我必须在 HDF5 之外实现“行号映射键”。
使用 HDFS 的分布式系统(如 Hadoop 或 Spark)不是更高效吗?我应该使用分布式系统来实现地图/哈希函数吗?
【问题讨论】:
标签: hadoop apache-spark hdfs hdf5 bigdata
是的,使用 HDFS 可以更高效
但是为了使其更高效,最好的情况是使用 Hive over HDFS,因为 Map reduce 不提供任何默认方法来按键分离数据。如果要按键分隔数据,则需要对其进行编码。
但是在 Hive 的情况下,您可以更有效地查询数据,因为 hive 为您提供了许多内置查询命令,例如 ex--> 按键、按值等分隔。 由于 Hive 使用 Sql 查询,因此也更易于使用。
有关查询 HDFS 的不同方式的更多详细信息,请参阅https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
希望这能回答您的问题。
【讨论】:
HDFS 会将数据保存在块中,然后根据数据格式,查询将一次读取块并解析记录。 HDFS 本身不会提供按键查找。
看看 HBase。它将数据存储在 HDFS 中,并为您提供一个 key -> value 接口来查找行:https://hbase.apache.org/
【讨论】: