本文目的是测试将shark和hadoop2进行整合。
本来打算使用Shark 最新版0.9.0 ,但是官方好像还没有针对与Hadoop2的正式下载地址。(这个要说明一下,官方只提供了源码,并没有找到编译好的0.9.0 for hadoop2 ,也许需要自己编译一个,没有证实)
shark0.9.0 的需要:
- Scala 2.10.3
- Spark 0.9.0
- (Optional) Tachyon 0.4.0
- AMPLab’s Hive 0.11
请注意版本要求。
于是查找Shark以前的版本是否有针对与Hadoop2的。发现官方提供了Shark0.7 for Hadoop2的下载,而且是编译好的。
需要:
- Spark version to 0.7.3
- hive-0.9.0
- scala-0.9.3
下载下来,配置shark,hive,spark. 运行spark,hadoop2。最后就可以运行测试了。(这些步骤可以参考这个http://www.cnblogs.com/nb591/p/3644388.html)
运行create table 操作时,报以下错误。
ERROR shark.SharkDriver: FAILED: Hive Internal Error: java.util.NoSuchElementException(null)
java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
at java.util.HashMap$ValueIterator.next(HashMap.java:822)
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:6760)
at shark.parse.SharkSemanticAnalyzer.analyzeInternal(SharkSemanticAnalyzer.scala:150)
at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:244)
at shark.SharkDriver.compile(SharkDriver.scala:197)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:336)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:895)
at shark.SharkCliDriver.processCmd(SharkCliDriver.scala:288)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:406)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:341)
at shark.SharkCliDriver$.main(SharkCliDriver.scala:203)
at shark.SharkCliDriver.main(SharkCliDriver.scala)
接下来进行了各种尝试来解决,问题依然存在。
最后在shark的讨论组里找到了答案,官方解释是他们发布的tar有问题,晕倒。
https://groups.google.com/forum/#!msg/shark-users/3J6wtFfBx5Q/x1gZdp4nLiUJ
于是尝试使用其他版本,经过测试,使用shark-0.8.1-bin-cdh4,hive-0.9.0-bin,hadoop-2.0.0-cdh4.3.0,spark-0.8.1进行整合,可以正常使用(尝试spark-0.7.3,至进行了简单的操作,也没问题)。
------Done----
知识源于网络 转载请注明出处http://www.cnblogs.com/nb591/p/3642672.html