0

我们正在尝试在 giraph 上运行 hive 作业,进行图形分析,但每次我们都会不断遇到我们以前从未见过的新错误..即使尝试了几个小时我们也找不到解决方案..现在我们得到了新错误..

我们使用以下命令运行 hive 作业

sudo -u hdfs hive --service jar \
    giraph-hcatalog-0.2-SNAPSHOT-jar-with-dependencies.jar \
    org.apache.giraph.io.hcatalog.HiveGiraphRunner \
    -vertexClass org.apache.giraph.vertex.MutableVertex \
    -vertexInputFormatClass org.apache.giraph.io.hcatalog.HCatalogVertexInputFormat \
    -vertexOutputFormatClass org.apache.giraph.io.hcatalog.HCatalogVertexOutputFormat \
    -w 1 -vi giraph_input -o giraph_output \
    HIVE_OPTS="-hiveconf javax.jdo.option.ConnectionURL=jdbc:mysql://localhost/metastore 
               -hiveconf javax.jdo.option.ConnectionDriverName=com.mysql.jdbc.Driver
               -hiveconf javax.jdo.option.ConnectionUserName=root
               -hiveconf javax.jdo.option.ConnectionPassword=root
               -hiveconf datanucleus.autoCreateSchema=false
               -hiveconf datanucleus.fixedDatastore=true"

i/p 有什么问题吗?只是想使用 hivegiraphrunner 运行 hive 作业,使用 hcat inputformatvertex 和 outformatvertex

使用 hadoop-0.20.2 hadoop-hive (cloudera) hadoop, hive, mysql, 正在正常工作和运行 (cofigured hadoop_env, hive-site)

giraph jars 是一个成功的构建

他们是我错过的东西,还是应该配置

任何建议都会有很大帮助..!!

得到以下异常..

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService;
    at com.google.common.cache.LocalCache.<clinit>(LocalCache.java:156)
    at com.google.common.cache.LocalCache$LocalManualCache.<init>(LocalCache.java:4765)
    at com.google.common.cache.CacheBuilder.build(CacheBuilder.java:821)
    at org.apache.hcatalog.common.HiveClientCache.<init>(HiveClientCache.java:89)
    at org.apache.hcatalog.common.HCatUtil.getHiveClient(HCatUtil.java:537)
    at org.apache.hcatalog.mapreduce.HCatUtils.getInputJobInfo(HCatUtils.java:75)
    at org.apache.giraph.io.hcatalog.GiraphHCatInputFormat.setVertexInput(GiraphHCatInputFormat.java:81)
    at org.apache.giraph.io.hcatalog.HiveGiraphRunner.run(HiveGiraphRunner.java:174)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
    at org.apache.giraph.io.hcatalog.HiveGiraphRunner.main(HiveGiraphRunner.java:147)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:197)
    enter code here
4

2 回答 2

1

Giraph 依赖于 guava 12.0(参见它的POM,第 752-756 行),这说明MoreExecutors.sameThreadExecutor()如果您在 hive/lib 中已经有 r06 并且 Hive 直接在其 JVM 中加载 giraph,则找不到(在 10.0 中引入)。

您可以尝试在 Hive 中升级 jar,但是由于 2 个版本之间的距离如此之大,它很可能不兼容。在这种情况下,我猜你可能需要升级 Hive,虽然我不是 Hadoop 用户并且不知道细节。

于 2013-01-19T20:40:43.660 回答
0

您可以从/hive/lib导入番石榴。如果出现任何其他依赖项,请将它们添加到

于 2013-03-19T09:11:27.240 回答