我试着比较我的postgresql数据仓库和新创建的hive数据仓库在同一个框中的相同功能,使用相同的数据和相同的表结构。我想了解Hive的好处,但是。。。尽管数据加载到postgresql的速度慢了3倍——postgresql上的索引创建/重建速度快了20倍,但索引不需要像在hive中那样每次都重建。我的问题是:我在Hive配置中缺少什么?
我的设置是:create table mytable(aa int,bb string)行格式分隔字段,以'\t'location'/data/spaces/hadoop/hadoopfs'结尾;
将data local inpath'/data/informix94/spaces/postgres/myfile\u big'overwrite加载到表mytable中;
在表mytable(aa)上创建索引mytable indx,格式为“org.apache.hadoop.hive.ql.index.compact.compactindexhandler”,延迟重建位置为“/data/spaces/hadoop/hadoopfs”;
设置hive.optimize.autoindex=true;设置hive.optimize.index.filter=true;
在mytable rebuild上改变索引mytable\u indx;
我的盒子是带有3g内存的虚拟机,上面运行postgresql,占用1g内存。他担任元数据存储。我使用的是centos、hadoop、hive的最新稳定版本,除了matadata存储位置和统计信息禁用外,没有更改hive的默认设置。
结果是:在260.000.000行上重建索引需要4798秒,在5.000.000行上重建索引需要80秒。
1条答案
按热度按时间0x6upsns1#
只有当您的数据不再适合一台机器时,hive才能正常工作。所以你看到的结果是预期的结果。因此,一旦你收集了数兆字节或数兆字节的数据,你会更高兴与Hive。在您描述的用例中,postgresql将是一个更好的匹配。