Hive是一个非常好用的东东。可以省去写MapReduce程序的痛苦。
一般来说,Hive可以覆盖90%的MapReduce任务的需求,大大减少开发代价。
但是使用Hive,有很多需要注意的地方。
本文会持续整理一些,帮大家避免一些问题。
1. 请不要使用Hive并行向同一个表的不同分区导入数据。
有人说,我想并行导入数据,这样可能快些。
Hive本身很好,但它的元数据一直是个软肋。
并行导入数据,就意味着需要并行访问元数据。这个是一个危险的操作。
Hive对元数据访问依赖于JDO的支持,而在并发情况下,JDO访问MySQL是存在bug的。
具体可参考:http://mail-archives.apache.org/mod_mbox/hive-user/201107.mbox/%3C4F6B25AFFFCAFE44B6259A412D5F9B1033183876@ExchMBX104.netflix.com%3E
建议的方法是,先通过hadoop客户端,并行的把数据导入到hdfs上。
然后在写一个脚本,串行的建表,建分区。