hive使用oracle作为数据源,导入数据使用sqoop或kettle或自己写代码(淘宝的开源项目中有一个xdata就是淘宝自己写的)。感觉sqoop比kettle快多了,淘宝的xdata没用过。
hive默认使用derby作为存储表信息的数据库,默认在哪启动就在哪建一个metadata_db文件放数据,可以在conf下的hive-site.xml中配置为一个固定的位置,这样不论在哪启动都可以了。另外就是配置成使用mysql的数据库,前两天忽然看到有人说也可以配置在oracle上,因为公司基本都是oracle的,所以配成oracle还是比较有用的。今天试着配置了一下,启动时报错说一个表里只能有一个long存在。java.sql.SQLException: ORA-01754: a table may contain only one column of type LONG , 上网查了一下,发现2012年就有人问这个问题,而关键是事隔1年半了,还是有人回复了这个问题,原贴地址:http://www.itpub.net/thread-1708861-1-1.html 。说是要把对应的数据库配置改一下。metastore/src/model/package.jdo是源文件,改完还得重新编译,所以我直接改了hive/lib/hive-metastore-0.12.0.jar这个包里的package.jdo文件,改完保存,再启动hive就好了。这个文件里定义了对应的数据库中的表,应该可以改表名和字段什么的。