之前在测试0.8.0时总是报tmp目录找不到的错,一直也没想出办法解决,忽然发现0.9.1已经正式推出了。
下载之后试了一下,发现报了readObject can't find class org.apache.hadoop.hive.conf.HiveConf 错误,查了一下,class是有的,到网上一查,说是要把shark放到集群的每台机器上。scp 过去之后就好了。
把hive0.11配好后,试了一下,居然不好用,折腾了半天才发现,这个版本已经自带hive的包了。在shark/lib_manager/jars/edu.berkeley.cs.shark下修改hive的metastore包里的jdo文件后,再把ojdbc包放到shark的lib下,就可以连接到数据库了。之后又修改了exec包,加了自定义函数,启动后报错,查了一下报错,发现这个自带的jar文件和hive0.11提供的jar文件里的东西居然不一样,看来hive的jar包也是调整过的,到shark的网站上查,没找到修改了的hive源码,估计得用git才能下到。又把包改回去,使用加临时函数的方式。
测试了一下,shark的reduce默认还是1,之前还抱希望能变成自动呢。
测试继续中,报了java.io.IOException: No space left on device,看了一下,是/tmp满了,因为linux是公司标装的,所以/tmp给了4G空间。把配置文件里的临时目录修改到几块硬盘下,目录使用,隔开。