我最近开始尝试Hbase和hadoop堆栈。我正在尝试从头开始构建一个应用程序。我正在为我的应用程序设计我的架构,它将使用谷歌n-gram数据集。
我意识到数据集可以被制作成一个模型,其中ngram作为行键,一个列族具有许多限定符(Year,page count,match_count),或者模型可以将n-gram作为行键和多个Year,page_count,match_count。
的列族我意识到模型取决于我想使用这些数据的方式,但我想了解这两种方法的优点和缺点。
干杯, Dwarak
答案 0 :(得分:0)
请考虑阅读Hbase书中的这一章:6.2. On the number of column families
“HBase目前不适用于两个或三个列系列以上的任何内容,因此请保持模式中列系列的数量较少。目前,刷新和压缩是基于每个区域完成的,因此如果一个列族携带大量的数据带来了冲洗,相邻的系列也会被刷新,虽然它们携带的数据量很小。当许多列系列冲洗和压缩交互可以产生一堆不必要的i / o加载(由改变冲洗和压实以按列系列工作。“
“如果你可以在你的模式中尝试使用一个列系列。在数据访问通常是列作用域的情况下,只引入第二和第三列系列;即你查询一个列族或另一个但通常不是两者都是“
现在,请记住,在物理上,所有列族成员都存储在文件系统中。由于调整和存储规范是在列族级别完成的,因此建议所有列族成员具有相同的通用访问模式和大小特征。如果所有数据都是同时处理的,那么您可能需要考虑只有一个列族的表。你最好不要使用多个系列,除非它们几乎一直是单独使用的。